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 有返回类型吗?这样做的正确方法是什么?
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)
您可以创建一种从控制台读取的方法来自动执行此过程,例如
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)
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |