如果情况在方法中使用多个params类型参数什么是替代,因为我在尝试使用多个params类型参数时出错
答案 0 :(得分:1)
改为使用普通数组:
public void Method( /*remove params*/ string[] first
, /*optionally remove params*/ int[] second
)
{ }
称之为:
Method(new string[] { ... }, new int[] { ... } );
或者,您可以按原样保留最后一个params
,因为根据MSDN,它只能是每个方法一个并且必须是最后一个:
方法声明中的params关键字后不允许使用其他参数,并且方法声明中只允许使用一个params关键字。
答案 1 :(得分:1)
为了简单使用,我会选择Patrick Hofman提供的解决方案。虽然,无论何时你想做更具特定类型的事情,包括更广泛的类型,我都会说你应该使用params
。
public class Bar { }
public void Foo(params object[] objs)
{
foreach(object obj in objs)
{
Type typeofObject = obj.GetType();
if (typeofObject == typeof(string))
{
// Its a string
}
else if (typeofObject == typeof(int))
{
// Its an integer
}
else if (typeofObject == typeof(Bar))
{
// Its an Bar object
}
}
}
调用方法:
Bar bar = new Bar();
this.Foo("hi", 1, bar);
但是,如果你只有2/3类型,那么这不是正确的解决方案。