1
public void AddEmployee<T> (T employee) where T : Employee
{

  //some code here


 }

でもこう書くと

public void AddEmployee (Employee Employee)
{
 // Code here
}

同様に、

public class GenericList<T> where T : Employee

public class GenericList<Employee> 

2つの違いはわかりません。のような派生制約としてインターフェースがある場合、私はそれを理解しています

public class GenericList<T> where T : IComparable, IConvertible 

しかし、サブクラスが使用されている場合 (上記の従業員のように)、それは私には意味がありません。ここで何か不足していますか?説明してください

4

2 に答える 2

6

違いは、List<Employee>は任意のインスタンスEmployeeまたはそのサブクラスの 1 つを保持できるのに対し、 aList<T> where T : Employeeはより制限的である可能性があることです。

これは、ジェネリック型Tが の任意のサブクラスになる可能性がEmployeeあり、その場合、リストには のサブクラスのインスタンスのみを含めることができ、インスタンスを含めることができTないためEmployeeです。

たとえば、与えられた

public class Manager : Employee
{
}

aList<Manager>はマネージャーのみを保持でき、Employee基本クラスのインスタンスや の他のサブクラスは保持できませんEmployee

対照的に、インスタンスEmployeeManagerインスタンスの両方をList<Employee>

于 2013-05-25T11:26:56.687 に答える