如果条件不满足,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

我如何设置这个工作?

如果条件不满足,c#函数将不返回任何东西

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