我想知道是否有办法创建一个可以接受可变数据类型的方法。 有时我需要将对象传递给该方法,有时是原始类型,如
SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers
这种方法的签名是什么样的?
答案 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");
答案 2 :(得分:1)
如果您希望某个方法接受任意数量的任何类型,即使可能非常慢且不可维护:
void Foo(params object[] arguments)
{
//Operate
}
上述方法几乎适用于任何类型,但在值类型的情况下,它必须将它们装箱,这需要处理。如果你想让你的代码更高效,我建议你创建重载以满足你的需求。
答案 3 :(得分:1)
还有方法重载,您传递多个具有相同名称但签名不同的方法。
public void SomeMethod(object o)
{
}
public void SomeMethod(int r, int p, int q)
{
}