一种非常 C#/.Net 的方法是使用 Lambda 表达式。您在数组中定义有效值列表,它将循环直到您获得这些值之一。
string myString = "";
string[] validValues = new string[] { "1", "2", "3" };
while (!validValues.Any(myString.Equals))
myString = Console.ReadLine();
它相当于:
string myString = "";
string[] validValues = new string[] { "1", "2", "3" };
while (!validValues.Any(s=>myString.Equals(s))
myString = Console.ReadLine();
switch (myString)
{
case "1":
Console.WriteLine("ans 1");
break;
case "2":
Console.WriteLine("ans 2");
break;
case "3":
Console.WriteLine("ans 3");
break;
}
validValues.Any
如果括号中的条件传递给任何元素,则返回 true。Lambda 表达式s=>myString.Equals(s)
几乎就像一个函数,当参数s
等于 myString 时将返回 true。s
使用时将被列表的每个元素替换Any
。
在这种情况下,重要的是要注意这=>
并不意味着更大或相等。这意味着您定义了一个s
作为参数并返回的函数/表达式myString.Equals(s)
。然后你将它传递给Any
,它将应用于每个元素,直到一个返回true
。如果没有返回 true,Any
将返回false
。
Lambda 表达式是 C# 的一个非常简洁的特性,当你习惯它时,它会让你编写比 C++ 等语言更简单的代码。由于我们大多数人花费大量时间编写样板代码或处理从各种来源获得的数据,因此可以使我们的生活更轻松。
更多关于lambda 表达式