C# 动态地将条目传递给需要参数的方法
我当前有以下需要参数的方法-我无法更改此方法定义:C# 动态地将条目传递给需要参数的方法,c#,iterator,params,C#,Iterator,Params,我当前有以下需要参数的方法-我无法更改此方法定义: public static DoStuff(params Parameter[] p){ /* ... */ } 我不知道在运行时会有多少个参数,所以我想传递一个数组或一个列表-我考虑过使用如下迭代器: List<Parameter> pList = new List<Parameter>(); pList.Add(new Parameter("@a", "aaaa!"); pList.Add(new Paramete
public static DoStuff(params Parameter[] p){ /* ... */ }
我不知道在运行时会有多少个参数,所以我想传递一个数组或一个列表-我考虑过使用如下迭代器:
List<Parameter> pList = new List<Parameter>();
pList.Add(new Parameter("@a", "aaaa!");
pList.Add(new Parameter("@b", "bbbb!");
pList.Add(new Parameter("@c", "cccc!");
DoStuff(Iterate(pList));
DoStuff(Iterate(pList), new Parameter("@d", "dddd!"));
我这样做只是出于好奇,想看看它是否有效——但这并不是简单地通过将我的列表
强制转换为数组
并附加下一个参数就能做到的
谢谢
Dennis据我所知,
params
关键字需要一个数组作为参数类型,您可以使用DoStuff(pList.ToArray())代码>然后
您指定的定义应该是
public static DoStuff(params Parameter[] p){ /* ... */ }
还是我错过了一些新功能?出于兴趣,为什么需要使用迭代/屈服方法
这有没有一个不起作用的原因
static void Main(string[] args)
{
List<Parameter> pList = new List<Parameter>();
pList.Add(new Parameter("@a", "aaaa!"));
pList.Add(new Parameter("@b", "bbbb!"));
pList.Add(new Parameter("@c", "cccc!"));
DoStuff(pList.ToArray());
}
static void DoStuff(params Parameter[] parameters){
foreach(var p in parameters)
{
//do something.
}
}
static void Main(字符串[]args)
{
List pList=新列表();
添加(新参数(“@a”,“aaaa!”);
添加(新参数(“@b”,“bbbb!”);
添加(新参数(“@c”,“cccc!”);
DoStuff(pList.ToArray());
}
静态void DoStuff(参数[]参数){
foreach(参数中的var p)
{
//做点什么。
}
}
您可以这样做:
DoStuff(pList.Concat(new[]{ new Parameter("@d", "dddd!"), new Parameter("@e", "eeee!"}).ToArray());
是的,你是对的,它是参数[]-我改变了我原来的解决方案,使它更容易一点,但忘了添加它。换了。不过,仅仅传递数组是不起作用的。它应该起作用的,请尝试创建自己的方法Test(params myType[]p)
并调用Test(new List(){…}.ToArray())
-错误消息是编译器错误还是运行时错误?DoStuff(..)是否有两个重载?一个用于参数数组,一个用于参数数组加单个参数?
DoStuff(pList.Concat(new[]{ new Parameter("@d", "dddd!"), new Parameter("@e", "eeee!"}).ToArray());