0

さまざまなタイプのジェネリックリストをパラメーターとして受け取るメソッドをオーバーロードするにはどうすればよいですか?

例えば:

私にはそのような2つの方法があります:

private static List<allocations> GetAllocationList(List<PAllocation> allocations)
{
    ...
}

private static List<allocations> GetAllocationList(List<NPAllocation> allocations)
{
    ...
}

これら2つの方法を1つに組み合わせる方法はありますか?

4

2 に答える 2

4

確かに...ジェネリックを使用することができます!

private static List<allocations> GetAllocationList<T>(List<T> allocations) 
   where T : BasePAllocationClass
{

}

これは、「allocations」、「PAllocation」、および「NPAllocation」がすべて「BasePAllocationClass」と呼ばれる基本クラスを共有していることを前提としています。それ以外の場合は、「where」制約を削除して、自分で型チェックを行うことができます。

于 2009-05-29T16:14:53.300 に答える
1

PAllocationとNPAllocationが共通のインターフェースまたは基本クラスを共有している場合は、それらの基本オブジェクトのリストを受け入れるだけのメソッドを作成できます。

ただし、そうでない場合でも、2つ(またはそれ以上)のメソッドを1つに結合したい場合は、ジェネリックスを使用してそれを行うことができます。メソッド宣言が次のようなものであった場合:

private static List<allocations> GetCustomList<T>(List<T> allocations)
{
    ...
}

次に、次を使用して呼び出すことができます。

GetCustomList<NPAllocation>(listOfNPAllocations);
GetCustomList<PAllocation>(listOfPAllocations);
于 2009-05-29T16:15:19.527 に答える