for循环中的新类

本文关键字:新类 循环 for | 更新日期: 2023-09-27 17:58:59

目前我有以下代码:

        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循环时,我是在某个地方有拼写错误,还是通常不允许这样做?

for循环中的新类

不能在集合初始值设定项中使用for循环。请使用以下代码:

DecisionVariable[] attributes = new DecisionVariable[49];
for (int i = 0; i < 49; i++)
    attributes[i] = new DecisionVariable ("Var" + i, iValues[i]);
    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]));
    }

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

DecisionVariable[] attributes = 
                      Enumerable.
                      Range(0, 49).
                      Select(i => new DecisionVariable("Var" + i, iValues[i])).
                      ToArray();

使用Enumerable很方便。范围方法:

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();

您可以这样做。

Class1[] c1 = new Class1[12];
for (int i = 0; i < 12; i++)
{
       c1[i] = new Class1(i);
}