编辑:原始问题没有意义,所以希望这个问题。
如何制作以下对象
object[] parms = { "p1", 1, "p2", 2, "p3", 3,..., "pn", n };
显然这不起作用:
foreach (var id in ids)
{
objects[] parms = { "p" + id.ToString(), id };
}
答案 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());
您可以发送以逗号分隔的指定类型的参数列表 在参数声明或参数数组中 指定类型。
你也可以这样做:
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}
}