c#中方法中的多个params类型参数

时间:2014-09-16 09:31:00

标签: c# .net params

如果情况在方法中使用多个params类型参数什么是替代,因为我在尝试使用多个params类型参数时出错

2 个答案:

答案 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类型,那么这不是正确的解决方案。