我有很多像这样的字符串变量;
string x1, x2, x3, x4, x5, x6, x7, x8;
是否可以缩短此代码
method(x1);
method(x2);
method(x3);
method(x4);
method(x5);
method(x6);
method(x7);
method(x8);
所以我可以使用这样的东西(下面的内容不起作用):
for(int i = 1; i <= 8; i++)
{
method("x" + i);
}
提前致谢!
答案 0 :(得分:4)
对所有这些字符串使用数组:
string[] data = new []
{
"string1",
"string2",
"string3",
"string4",
x1,
x2,
x3,
x4
};
foreach(var item in data)
{
method(item);
}
对于数组它是相同的,只有一组数组:
var data = new List<string[]>
{
new [] {"1","2","3"},
new [] {"a","b","c"},
};
foreach(var item in data)
{
method2(item); //notice that this method must get as a parameter a string[]
}
答案 1 :(得分:1)
其他答案显示如何遍历值并为每个值调用方法。如果你可以重写方法,另一种方法是让它接受多个参数。
static void YourMethod(params string[] values)
{
foreach (var value in values)
{
// Do your work
}
}
你可以像这样使用它:
YourMethod(x1, x2, x3, x4);
答案 2 :(得分:0)
根据Gilad的答案,您可以使用List和ForEach:
var data = new List<string>
{
"string1",
"string2",
"string3",
"string4",
x1,
x2,
x3,
x4
};
data.ForEach(x => method(x));
甚至更短:
data.ForEach(method);
答案 3 :(得分:0)
您可以使用上述foreach循环,或者以对我来说看起来更干净的方式,使用Extension Method作为您正在使用的对象类型。如果您经常使用该方法,但这仍然有效,这是很好的。
static class Program
{
static void Main()
{
int[] test = { 1, 12, 13, 11, 31, 41, 21};
test.CycleArray();
}
public static void CycleArray(this int[] myArr)
{
if (myArr.Length > 0)
foreach (int x in myArr)
Console.WriteLine(x);
}
然后,您可以在该类型的任何对象上调用该方法,而无需再编写代码。
做
test.CycleArray();
每次获得int []类型的对象都可以在没有附加代码的情况下工作。
如果您不愿意使用LINQ,那就是这种方式。在最后一个案例中
MyArray.ForEach(x => x+="i");
如你所说,假设你的代码不起作用,我们会在一行中做同样的事情。
答案 4 :(得分:0)
您可以使用下面的字符串和操作字典
Dictionary<string, Action<string>> _mapOfMethods = new Dictionary<string,Action<string>> { { "TestString1", Method1 }, {"TestString2", Method2 }};
然后你可以使用下面的foreach语句
foreach (var item in _mapOfMethods)
{
item.Value(item.Key);
}