0

我有一个我无法解决的问题。

这是代码

 sik input = new sik();
        for (int i = 0; i < 5; i ++)
        {
            input.skId = securitiesArray[i].skId;
            input.country = securitiesArray[i].country;

        }
   sik[] inputs = new sik[]
            {
                input
            };

现在我知道这只会在 sik[] 列表中放入 1 个值。

我怎样才能把所有 5 个值都放在这个列表中。

谢谢

注意:我不能先初始化ski[]。这必须按此顺序完成。

4

6 回答 6

5

任何理由它必须是一个数组?

List<sik> input = new List<sik>();

for (int i = 0; i < 5; i ++)
{
    var newInput = new sik();        
    newInput.skId = securitiesArray[i].skId;
    newInput.country = securitiesArray[i].country;
    input.Add(newInput);
}

List 有用的原因是它可以随着你动态增长,所以你不必担心你可能需要添加多少实例。

列表的 MSDN 文档和所有它的光荣方法 http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

于 2013-03-12T22:13:15.467 回答
1
    sik[] inputs = new sik[5];
    for (int i = 0; i < 5; i ++)
    {
        sik input = new sik();
        input.skId = securitiesArray[i].skId;
        input.country = securitiesArray[i].country;
        inputs[i] = input;
    }
于 2013-03-12T22:12:37.987 回答
1

您可以使用 Linq 来执行此操作。

sik[] inputs = securitiesArray.Select(item => 
    new sik() 
    { 
        skId = item.skId, 
        country = item.country 
    }).ToArray();
于 2013-03-12T22:13:01.903 回答
1

您不能拥有可变大小的数组,而是可以使用 List。

    List<sik> siks = new List<sik>();
    sik input = new sik();
    for (int i = 0; i < 5; i ++)
    {
        input.skId = securitiesArray[i].skId;
        input.country = securitiesArray[i].country;

        siks.Add(input);
    }

如果您还想要数组,请使用sik[] inputs = skis.ToArray();

于 2013-03-12T22:14:35.333 回答
1

对于它的价值,这里是 Linq 方法:

sik[] inputs = Enumerable.Range(0, 5)
    .Select(i => new sik{ kId = securitiesArray[i].skId, country = securitiesArray[i].country})
    .ToArray();

如果securitiesArray是类型sik(属性建议),您可以直接从中选择:

sik[] inputs = securitiesArray.Take(5).ToArray();
于 2013-03-12T22:15:33.787 回答
1

你也可以这样做,

List<sik> input=new List<sik>();
for(int i=0;i<securitiesArray.Length;i++)
{
   input.Add(new{skId=securitiesArray[i].skid,country=securitiesArray[i].country});
}
于 2013-03-12T22:18:22.590 回答