7

目前我有以下代码:

        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 循环,我是否在某处有错字,或者通常不允许这样的错字?

4

5 回答 5

12

您不能在集合初始化程序for中使用循环。请改用此代码:

DecisionVariable[] attributes = new DecisionVariable[49];
for (int i = 0; i < 49; i++)
    attributes[i] = new DecisionVariable ("Var" + i, iValues[i]);
于 2013-02-14T08:45:28.750 回答
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]));
    }
于 2013-02-14T08:46:04.793 回答
3

您可以使用 LINQ 语法来执行此操作:

DecisionVariable[] attributes = 
                      Enumerable.
                      Range(0, 49).
                      Select(i => new DecisionVariable("Var" + i, iValues[i])).
                      ToArray();
于 2013-02-14T08:48:03.073 回答
1

使用Enumerable.Range 方法很方便:

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();
于 2013-02-14T08:49:21.640 回答
0

你可以做这样的事情。

Class1[] c1 = new Class1[12];
for (int i = 0; i < 12; i++)
{
       c1[i] = new Class1(i);
}
于 2013-02-14T09:00:56.550 回答