可変データ型を受け入れることができるメソッドを作成する方法があるかどうか知りたかった. 時々、そのメソッドにオブジェクトを渡す必要がある場合があります。
SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers
そのようなメソッドのシグネチャはどのようになりますか?
可変データ型を受け入れることができるメソッドを作成する方法があるかどうか知りたかった. 時々、そのメソッドにオブジェクトを渡す必要がある場合があります。
SomeMethod(object);
SomeMEthod(r,p,q); //Where r,p,q are integers
そのようなメソッドのシグネチャはどのようになりますか?
メソッド内のパラメーターのタイプを気にしない場合は、次のように単純に使用できます。
public void SomeMethod(params object[] list)
パラメーターの型を別の方法で処理する必要がある場合は、より具体的にし、厳密に型指定されたメソッドのオーバーロードをいくつか作成する必要があります。
事前に型がわからず、実際には 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");
同じ名前で署名が異なる複数のメソッドを渡すメソッドのオーバーロードもあります。
public void SomeMethod(object o)
{
}
public void SomeMethod(int r, int p, int q)
{
}
メソッドが非常に遅くて保守できない場合でも、任意の数の任意のタイプを受け入れる場合:
void Foo(params object[] arguments)
{
//Operate
}
上記の方法はほとんどすべての型で機能しますが、値型の場合はボックス化する必要があり、処理が必要です。コードのパフォーマンスをもう少し向上させたい場合は、必要に応じてオーバーロードを作成することをお勧めします。