代码不会执行所有
The Code Won't Execute all
我有以下代码:
private void G1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
decimal quantity = 0, cost = 0;
decimal totalstock = 0, newtotalstock = 0;
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["Cost"].Value.ToString(), out cost))
{
decimal price = quantity * cost;
G1.Rows[e.RowIndex].Cells["Total"].Value = price.ToString();
}
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["TotalStock"].Value.ToString(), out totalstock) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity))
{
newtotalstock = totalstock - quantity;
G1.Rows[e.RowIndex].Cells["TotalStock"].Value = newtotalstock.ToString();
return;
}
decimal avai = 0, newavai = 0;
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["AvailableStock"].Value.ToString(), out avai))
{
newavai = avai - quantity;
G1.Rows[e.RowIndex].Cells["AvailableStock"].Value = newavai.ToString();
return;
} }
问题是,它只执行 3 中的 2 代码,我的意思是,当计算 newtotalstock 时,代码将结束。
我尝试将newavai改成上面的up,结果是一样的,会计算newavai并通过newtotalstock。我不知道为什么,所有的代码都是正确的。请帮忙
word "return" 结束函数,如果你使用的是 void 类型的方法,你真的不需要使用 return,除非你想在某个时候退出它。 "return"之后的代码将永远不会执行(唯一的例外可能是在使用"yield return"期间,但那是另一回事)。
void someMethod()
{
doSomething();
return;
StartWorldWarThree(); //no waries, this will never be executed :)
}
此外,您始终可以在代码中设置断点(单击 window 的左边框,或者只是阅读它),然后检查您的代码是如何执行的:) F10/F11 在您的代码中执行步骤,F5 转到下一个断点或结束执行,如果没有更多断点。
考虑到所有条件都为真 return;将停止执行其余代码,如果要执行 3,请删除 return;并将其放在方法的最后一行
void Method() {
if() {}
if() {}
if() {}
return;
}
或者根本不放,因为那个方法是无效的,不需要它
我有以下代码:
private void G1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
decimal quantity = 0, cost = 0;
decimal totalstock = 0, newtotalstock = 0;
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["Cost"].Value.ToString(), out cost))
{
decimal price = quantity * cost;
G1.Rows[e.RowIndex].Cells["Total"].Value = price.ToString();
}
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["TotalStock"].Value.ToString(), out totalstock) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity))
{
newtotalstock = totalstock - quantity;
G1.Rows[e.RowIndex].Cells["TotalStock"].Value = newtotalstock.ToString();
return;
}
decimal avai = 0, newavai = 0;
if (decimal.TryParse(G1.Rows[e.RowIndex].Cells["RealExport"].Value.ToString(), out quantity) && decimal.TryParse(G1.Rows[e.RowIndex].Cells["AvailableStock"].Value.ToString(), out avai))
{
newavai = avai - quantity;
G1.Rows[e.RowIndex].Cells["AvailableStock"].Value = newavai.ToString();
return;
} }
问题是,它只执行 3 中的 2 代码,我的意思是,当计算 newtotalstock 时,代码将结束。
我尝试将newavai改成上面的up,结果是一样的,会计算newavai并通过newtotalstock。我不知道为什么,所有的代码都是正确的。请帮忙
word "return" 结束函数,如果你使用的是 void 类型的方法,你真的不需要使用 return,除非你想在某个时候退出它。 "return"之后的代码将永远不会执行(唯一的例外可能是在使用"yield return"期间,但那是另一回事)。
void someMethod()
{
doSomething();
return;
StartWorldWarThree(); //no waries, this will never be executed :)
}
此外,您始终可以在代码中设置断点(单击 window 的左边框,或者只是阅读它),然后检查您的代码是如何执行的:) F10/F11 在您的代码中执行步骤,F5 转到下一个断点或结束执行,如果没有更多断点。
考虑到所有条件都为真 return;将停止执行其余代码,如果要执行 3,请删除 return;并将其放在方法的最后一行
void Method() {
if() {}
if() {}
if() {}
return;
}
或者根本不放,因为那个方法是无效的,不需要它