我正在编写一个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
如何设置此功能?
答案 0 :(得分:6)
PRE-编辑:
鉴于您在评论中已经说过“如果文本框为空,程序应该什么也不做”,为什么不这样做呢:
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;
}
这将返回一个普通的char,但如果文本框没有文本,则会返回一个空终止符。
答案 1 :(得分:1)
如果textBox.Text.Length > 0
,您想要返回什么?该函数必须返回一些内容,但在上面的示例中,只有在条件满足时才会返回,这可能不是。
答案 2 :(得分:1)
您的唯一回报是在条件声明中。
你必须在if语句之外返回一些内容。
答案 3 :(得分:0)
如果你听说过MVC,你就会知道这是你需要在控制器中检查的东西。控制器应确保您的文本框不为空,然后,将调用您编写的代码(以及应该在模型中的代码)。这是一个很好的软件工程实践。
简单来说,检查TextBox是否为空(代码中的其他位置),然后有条件地调用getLastChar()。
或者,您可以检查长度并返回null,但最终必须在某个位置处理null值。因此,在进行函数调用之前检查TextBox的大小,并获得一些可重用的代码。