“返回”C#的返回类型是什么

Ark*_*ris 9 c# console return return-type

我正在制作一个控制台应用程序,我有一个“菜单”,用户可以在其中输入信息来创建一个新的 Person 对象。下面是一个方法里面。

        Write("Please enter the first name: ", false);
        string fName = Console.ReadLine().ToUpper();
        Write("Please enter the middle initial: ", false);
        string mInitial = Console.ReadLine().ToUpper();
        Write("Please enter the last name: ", false);
        string lName = Console.ReadLine().ToUpper();
Run Code Online (Sandbox Code Playgroud)

像这样。我希望用户能够在他们决定不想成为新人时随时退出该方法。所以我想创建一个名为“CheckExit”的新方法,如果他们输入“EXIT”,它将离开“CreatePerson”方法。所以我希望“CheckExit”返回一个回报。否则我必须在每次输入后添加一个“if”语句,这会变得混乱。

这可能吗?return 有返回类型吗?这样做的正确方法是什么?

Jan*_*tke 8

return不是可以返回的类型,它是返回结果的关键字。所以不幸的是,你试图做的事情是不可能的。但是,您可以通过使用查询数组并获取循环内每个查询的结果,使您的代码更具可读性和可扩展性。这具有能够轻松添加更多查询的额外效果。

// you can put these queries somewhere outside the function
string[] queries = {"Please enter the first name: ", ...}
var results = new List<string>();

foreach (string query in queries) {
    Write(query, false);
    var result = Console.ReadLine().ToUpper();
    if (result.Equals("EXIT") {
        return;
    }
    results.Add(result);
}

// handle your inputs from the results list here ...
Run Code Online (Sandbox Code Playgroud)

  • 这不是更具可读性。 (7认同)
  • @user253751 你大错特错了。由于回答者正确解释的原因,这个答案中的代码比OP的代码“简单得多”。我强烈主张将可读性和可维护性作为正确性之后的首要考虑因素。 (2认同)
  • @user253751 一个[极其可疑的指标](https://www.cs.du.edu/~snarayan/sada/teaching/COMP3705/lecture/p1/cycl-1.pdf)几十年前就不再使用了,并且好理由。 (2认同)

dcg*_*dcg 7

您可以创建一种从控制台读取的方法来自动执行此过程,例如

internal class StopCreatingPersonException : Exception
{}

public static string ReadFromConsole(string prompt)
{
     Write(prompt, false);
     var v = Console.ReadLine().ToUpper();
     if (v == "EXIT") { throw new StopCreatingPerson (); }
     return v;
}
Run Code Online (Sandbox Code Playgroud)

然后你的代码看起来像:

try {
    string fName = ReadFromConsole("Please enter the first name: ");
    ....
}
catch (StopCreatingPersonException)
{ }
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,我没有意识到创建了自己的例外。我会更多地了解这方面的知识,谢谢。 (2认同)