0

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

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

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

4

4 回答 4

3

如果您不关心方法中参数的类型,您可以简单地使用:

public void SomeMethod(params object[] list)

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

于 2013-01-09T19:34:00.707 回答
1

如果您事先不知道类型,并且它实际上可以是 ANY 类型,那么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 文档

于 2013-01-09T19:34:44.963 回答
1

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

public void SomeMethod(object o)
{
}

public void SomeMethod(int r, int p, int q)
{
}
于 2013-01-09T19:35:53.497 回答
0

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

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

上述方法几乎适用于任何类型,但如果是值类型,则必须将它们装箱,这需要处理。如果你想让你的代码更有性能,我建议你创建重载来满足你的需要。

于 2013-01-09T19:34:34.387 回答