如何在循环中添加到object []?

时间:2014-04-17 17:41:45

标签: c#

编辑:原始问题没有意义,所以希望这个问题。

如何制作以下对象

object[] parms = { "p1", 1, "p2", 2, "p3", 3,..., "pn", n };

显然这不起作用:

foreach (var id in ids)
{
    objects[] parms = { "p" + id.ToString(), id };       
}

4 个答案:

答案 0 :(得分:2)

因为问题已经改变了......

您可以构建对象数组,如:

List<int> ids = new List<int> { 1, 2, 3, 4, 5 }; //assuming your ids are like that
List<object> objList = new List<object>();
foreach (var item in ids)
{
    objList.Add("p" + item);
    objList.Add(item);
}

object[] parms = objList.ToArray();

现在,parms将包含多个对象,首先是包含"p" + id的字符串,第二个包含id

不确定为什么需要这样的构造,您可以使用自定义对象的Dictionary<int,string>List,其中一个属性用于字符串,另一个用于int id


旧答案。

只需将其称为:

List<object> parms = new List<object>();
someFunction("somestring", parms.ToArray());

请参阅:params (C# Reference)

  

您可以发送以逗号分隔的指定类型的参数列表   在参数声明或参数数组中   指定类型

你也可以这样做:

someFunction("string", ids.Select(r => "p" + r).ToArray());

答案 1 :(得分:1)

您只需将列表转换为数组即可。

someFunction("", parms.toArray());

答案 2 :(得分:1)

其他答案在如何使用参数的说明中是正确的。

但在你的情况下,你是对对象数组进行双重嵌套。

您的params[0]object[2] - 可能是因为有两个id in ids,并且因为您将每个“由ID构成的内容”添加为object[]

因此params[0][0]是您的第一个ID的pID字符串,而params[0][1]是其数字id

为了使这个更清洁,您可以定义自己的类来保存信息,或使用Tuple&lt;&gt;。然后,检查你的params []的内容 - 这应该属于这种类型,你可以投射它们并使用它们。

答案 3 :(得分:0)

可以像这样改变它:

someFunction( string a, IList parms)
{
  // this should receive array of actual {p#'s, #'s}
}