可以接受各种类型的方法

时间:2013-01-09 19:31:12

标签: c#

我想知道是否有办法创建一个可以接受可变数据类型的方法。 有时我需要将对象传递给该方法,有时是原始类型,如

SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers

这种方法的签名是什么样的?

4 个答案:

答案 0 :(得分:4)

如果您不关心方法中的参数类型,只需使用:

public void SomeMethod(params object[] list)

如果您需要以不同方式处理参数类型,则必须更加具体,并创建强类型方法的多个重载。

答案 1 :(得分:2)

如果您事先不知道类型,并且它实际上可以是任何类型,那么object参数将适用于参考和值类型。

示例:

public static void Method(params object[] list) 
{
  for ( int i = 0 ; i < list.Length ; i++ )
      Console.WriteLine(list[i]);
}

Method(1, 'a', "test"); 

MSDN documentation

答案 2 :(得分:1)

如果您希望某个方法接受任意数量的任何类型,即使可能非常慢且不可维护:

void Foo(params object[] arguments)
{
    //Operate
}

上述方法几乎适用于任何类型,但在值类型的情况下,它必须将它们装箱,这需要处理。如果你想让你的代码更高效,我建议你创建重载以满足你的需求。

答案 3 :(得分:1)

还有方法重载,您传递多个具有相同名称但签名不同的方法。

public void SomeMethod(object o)
{
}

public void SomeMethod(int r, int p, int q)
{
}