for循环中的新类

时间:2013-02-14 08:44:23

标签: c# .net class

目前我有以下代码:

        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循环,我是否在某个地方有拼写错误或者通常是不允许的?

5 个答案:

答案 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)

使用Enumerable.Range Method

很方便
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);
}