C# 如何添加到循环中的对象[]?

C# 如何添加到循环中的对象[]?,c#,C#,编辑:原来的问题没有意义,所以希望这个问题有意义 如何制作下面的对象 object[] parms = { "p1", 1, "p2", 2, "p3", 3,..., "pn", n }; 显然,这是行不通的: foreach (var id in ids) { objects[] parms = { "p" + id.ToString(), id }; } 既然问题已经改变了 您可以像这样构造对象数组: List<int> ids = new List&

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

如何制作下面的对象

object[] parms = { "p1", 1, "p2", 2, "p3", 3,..., "pn", n };
显然,这是行不通的:

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

既然问题已经改变了

您可以像这样构造对象数组:

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();
见:

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

您还可以执行以下操作:

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

您可以简单地将列表转换为数组

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

可以这样更改它:

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

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

但在你的例子中,你是双重嵌套你的对象数组

您的
参数[0]
是一个
对象[2]
——可能是因为id中有两个
id,并且您正在将每个“由id构成的东西”添加为
对象[]

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


为了使它更清晰,您可以定义自己的类来保存信息,或者使用Tuple。然后,检查params[]的内容,它应该是这种类型的,您可以强制转换它们并使用它们。

someFunction(“,parms.ToArray())实际的{p#'s,{p#'s}
?well inspector显示parms[0]是对象[2],但我希望parms[0]显示{p1,1}.@O.O这是一个大小为2的数组,所以它正是您想要的。@O.O然后不再传入数组,传入一个数组,其中包含一个
ToString
实现,它可以实现您希望它做的事情。也许可以,也许不可以。你不能肯定。不过,他问如何将集合传递给只接受数组的对象,所以这目前是错误的。然而,C#6可能会引入params-IEnumerable,这将是非常棒的。
someFunction( string a, IList parms)
{
  // this should receive array of actual {p#'s, #'s}
}