目前我有以下代码:
DecisionVariable[] attributes =
{
new DecisionVariable("Var1", 2),
new DecisionVariable("Var2", 4),
new DecisionVariable("Var3", 1),
new DecisionVariable("Var4", 2),
new DecisionVariable("Var5", 5),
};
但我想使用For循环创建它们:
DecisionVariable[] attributes =
{
for (int i=0;i<49;i++)
{
new DecisionVariable ("Var" + i, iValues[i]);
}
};
在第二个版本中,C#告诉我“For”的表达式无效。
在构造函数中使用for循环,我是否在某个地方有拼写错误或者通常是不允许的?
答案 0 :(得分:12)
您无法在collection initializer内使用for
循环。请改用此代码:
DecisionVariable[] attributes = new DecisionVariable[49];
for (int i = 0; i < 49; i++)
attributes[i] = new DecisionVariable ("Var" + i, iValues[i]);
答案 1 :(得分:3)
DecisionVariable[] attributes = new DecisionVariable[49];
for (int i=0; i<49; i++)
{
attributes[i] = new DecisionVariable("Var" + i, iValues[i]);
}
您也可以使用generics
并执行:
List<DecisionVariable> attributes = new List<DecisionVariable>();
for (int i=0; i<49; i++)
{
attributes.Add(new DecisionVariable("Var" + i, iValues[i]));
}
答案 2 :(得分:3)
您可以使用LINQ语法执行此操作:
DecisionVariable[] attributes =
Enumerable.
Range(0, 49).
Select(i => new DecisionVariable("Var" + i, iValues[i])).
ToArray();
答案 3 :(得分:1)
DecisionVariable[] attributes = Enumerable
.Range(0, 49)
.Select(i => new DecisionVariable("Var" + i, iValues[i]))
.ToArray();
如果iValues
数组具有相同数量的元素,您希望拥有attributes
数组,请考虑以下代码:
DecisionVariable[] decisionVariables = iValues
.Select((value, index) => new DecisionVariable("Var" + index, value))
.ToArray();
答案 4 :(得分:0)
你可以这样做。
Class1[] c1 = new Class1[12];
for (int i = 0; i < 12; i++)
{
c1[i] = new Class1(i);
}