如果条件不满足,c#函数将不返回任何东西
本文关键字:返回 任何东 函数 条件 不满足 如果 | 更新日期: 2023-09-27 17:53:57
我正在编写一个WPF/c#应用程序,在应用程序中我有这个函数:
private char getLastChar()
{
if (textBox1.Text.Length > 0)
return textBox1.Text[textBox1.Text.Length - 1];
}
如果我保持这样,我得到一个错误:
MainWindow.getLastChar()': not all code paths return a value
我如何设置这个工作?
PRE-EDIT:
考虑到你在注释中说过"如果文本框为空,程序应该什么都不做",为什么不这样做呢:
if (textBox1.Text.Length > 0)
{
//DO STUFF HERE
}
else
{
//DO NOTHING HERE
}
如果您确实需要返回一个空值,您可以使用以下两个选项之一:
private char? getLastChar()
{
if (textBox1.Text.Length > 0)
return textBox1.Text[textBox1.Text.Length - 1];
else
return null;
}
你可以这样使用:
char? lastCharInTextBox = getLastChar();
if (lastCharInTextBox == null)
{
//Do something about empty text box
}
else
{
char myVar = lastCharInTextBox.Value;
//Do something with the character inside "myVar"
}
字符是值类型,这意味着它们不能被设置为空引用。使用问号将使该字符可为空。
或者,您可以执行以下操作:
private char getLastChar()
{
if (textBox1.Text.Length > 0)
return textBox1.Text[textBox1.Text.Length - 1];
else
return 0;
}
这将返回一个普通的字符,但如果文本框没有文本,将返回一个空结束符。
唯一的返回值是在条件语句中。
你必须在if语句之外返回一些东西
如果是textBox.Text.Length > 0
,您希望返回什么?该函数必须返回一些东西,但在上面的示例中,它只在条件满足时返回,而条件可能不满足。
如果你听说过MVC,你就会知道这是你需要在控制器中检查的东西。控制器应该确保您的文本框不是空的,然后,您编写的代码(应该在模型中)将被调用。这是很好的软件工程实践。
简单来说,检查TextBox是否为空(在代码中的其他地方),然后有条件地调用getLastChar()。
或者,您可以检查长度并返回null,但是您最终必须在某个地方处理null值。因此,在进行函数调用之前检查TextBox的大小,并获得一些可重用的代码。