如果条件不满意,C#函数不返回任何内容

时间:2011-05-01 16:12:59

标签: c# wpf

我正在编写一个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

如何设置此功能?

4 个答案:

答案 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的大小,并获得一些可重用的代码。