使用循环初始化多个对象

本文关键字:对象 初始化 循环 | 更新日期: 2023-09-27 18:04:35

我试图在包含58个属性的促子数据上构建ID3算法。我如何使用循环(例如for或foreach)来初始化所有属性,而不是初始化每个单一属性?

基本上我想用一个循环来代替下面的方法但是我不能在

内使用循环
var splits = line.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        var name = splits[1];
        var data = splits[2].Trim();
        string[] array = null;
        for (int i = 0; i < data.Length; i++)
        {
            array[i]= data.ToCharArray().GetValue(i).ToString();
        }
        return new Instance
        {
            Output = new Output(splits[0], "Result"),
            Features = new List<Feature>
                                  {
                                  new Feature(array[0], "1"),
                                  new Feature(array[1], "2"),
                                  new Feature(array[2], "3"),
                                  new Feature(array[3], "4"),
                                  //and so on for all atributes
                                  }
        };

使用循环初始化多个对象

你可以这样做:

Features = Enumerable.Range(1, 58)
            .Select(x => new Feature(array[x - 1], x.ToString()))
            .ToList()

另一个答案很好,您应该熟悉LINQ以应对此类情况。但是,如果您想了解如何使用您已经熟悉的语言特性轻松完成此操作,您可以这样做:

var features = new List<Feature>();
for(int i = 0; i < 58; i++)
{
    features.Add(new Feature(array[i], (i+1).ToString()));
}

然后在创建Instance:

时分配它。
return new Instance
{
    Output = new Output(splits[0], "Result"),
    Features = features
};