Any()
如果存在要枚举的内容,则具有空参数的重载将返回 true。此外,它返回一个布尔值,所以如果你连接你对字符串所做的方式,你的 if 条件看起来像这样:
if(con.Name == "textBoxTrue")
//or
if(con.Name == "textBoxFalse")
所以你必须像奥利弗所展示的那样去做。另一个(较短的)选项是:
if (numbers.Any(n => con.Name == "textBox" + n))
{
MessageBox.Show("Something");
}
整个foreach
事情可以写在一行中(这是 Linq 提供帮助的地方):
foreach (var x in this.Controls
.OfType<TextBox>()
.Where(con => numbers.Any(n => con.Name == "textBox" + n)))
{
MessageBox.Show("Something");
}
但是,如果您正在做的是更复杂的事情,那么最好这样编写foreach
以提高可读性。
您还可以利用 C# 提供的各种数组初始化语法。在向数组添加元素时指定大小使其几乎没有冗余。看到这个。所以它只需要:
var numbers = new[] { "3", "4", "5", "6", "7" }; //may replace var with string[]
//or
string[] numbers = { "3", "4", "5", "6", "7" };
代替
string[] numbers = new string[5] { "3", "4", "5", "6", "7" };