首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用循环初始化多个对象

使用循环初始化多个对象
EN

Stack Overflow用户
提问于 2014-05-21 23:09:30
回答 2查看 467关注 0票数 0

我试图在包含58个属性的ID3上构建启动子数据算法。我如何才能不使用循环(例如for或foreach)将每个属性内部化,从而使所有属性无效呢?

基本来说,我不想做下面的操作,我想用一个循环来完成它,但是我不能在曲线内部使用一个循环。

代码语言:javascript
复制
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
                                  }
        };
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-21 23:11:51

你可以:

代码语言:javascript
复制
Features = Enumerable.Range(1, 58)
            .Select(x => new Feature(array[x - 1], x.ToString()))
            .ToList()
票数 2
EN

Stack Overflow用户

发布于 2014-05-21 23:31:34

另一个答案是好的,您肯定应该熟悉LINQ在这种情况下。但是,如果您想了解如何使用您已经熟悉的语言特性轻松地完成这一任务,您可以这样做:

代码语言:javascript
复制
var features = new List<Feature>();
for(int i = 0; i < 58; i++)
{
    features.Add(new Feature(array[i], (i+1).ToString()));
}

然后在创建Instance时分配这个

代码语言:javascript
复制
return new Instance
{
    Output = new Output(splits[0], "Result"),
    Features = features
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23795327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档