我正在攻读MCSD认证。以下是我的书中给出的示例代码
private bool ValidateRow(TextBox descrTextBox, TextBox quantityTextBox,
TextBox priceEachTextBox, out int quantity, out decimal priceEach)
{
// Assume these are 0.
quantity = 0;
priceEach = 0;
// If no values are present, the row is okay.
if ((descrTextBox.Text == "") &&
(quantityTextBox.Text == "") &&
(priceEachTextBox.Text == ""))
return false;
// Some values are present to make sure all are.
if (ValidateRequiredTextBox(descrTextBox, "Description")) return true;
if (ValidateRequiredTextBox(quantityTextBox, "Quantity")) return true;
if (ValidateRequiredTextBox(priceEachTextBox, "Price Each")) return true;
// All values are present.
// Try to parse quantity.
if (!int.TryParse(quantityTextBox.Text, out quantity))
{
// Complain.
DisplayErrorMessage(
"Invalid format. Quantity must be an integer.",
"Invalid Format", quantityTextBox);
return true;
}
从上面你可以看到有很多return语句。这些退货声明如何运作?从上面可以看到" ValidateRequiredTextBox"功能使用了三次。
答案 0 :(得分:1)
如果返回类型不是void
,则return语句退出方法并返回给定值
返回语句之后执行的方法中唯一的语句是finally块中的那些语句或者使用块的对象(基本上是try-finally的特殊形式):
private void TestMethod()
{
// Do something
if (conditionIsMet)
return; // Exits the method immediately
try
{
// Do something
if (conditionIsMet)
return; // Statements in finally block will be executed before exiting the method
}
finally
{
// Do some cleanup
}
using (var disposableObj = new DisposableObject())
{
// Do something
if (conditionIsMet)
return; // disposableObj will be disposed before exiting the method
}
}
答案 1 :(得分:0)
请参阅,返回始终有效,而不是倍数。这意味着在返回时发现代码表示编译器打破流程并转到方法的末尾,异常是try-catch-finally,其中控制返回到finally块并开始执行代码块。见下面的示例:
//few codes
string yourname ="jack";
if(yourname="jack")
return true;
if(yourname="pedro")
return false;
// more codes
假设您正在填写这些行,并假设您的名称是jack,那么当它命中第一个if语句时它将检查条件并且因为它是真的所以它将返回true并且将在稍后停止执行代码块仅限功能。
答案 2 :(得分:0)
您的函数根据各种条件返回bool结果。重要的是如果一个return语句执行你的程序将不会转到下一行并退出该函数。
例如:
if (ValidateRequiredTextBox(descrTextBox, "Description")) return true;
if (ValidateRequiredTextBox(quantityTextBox, "Quantity")) return true;
这里,如果第一次ValidateRequiredTextBox(descrTextBox, "Description")
调用返回true,则函数将返回true并完成。它不会检查其他条件。但如果ValidateRequiredTextBox
返回false,它将检查其他条件,因此上。