爲什麼下面的代碼會引發編譯錯誤?根據C#4.0協方差應該不允許這樣的轉換。 列表employeeList = managerList;C#中的協變編譯錯誤
class Program
{
static void Main(string[] args)
{
List<Manager> managerList = new List<Manager>()
{
new Manager{ FirstName="ASFD", LastName="DSS", NoOfReportees=4},
new Manager{ FirstName="rrr", LastName="dsasde", NoOfReportees=22}
};
List<Employee> employeeList = managerList;
}
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Manager:Employee
{
public int NoOfReportees { get; set; }
}
只有接口才允許協方差。 '列表'沒有界面。 'IList '既不是共變體也不是反變體,因爲你必須讀寫元素。 –
'列表'不是什麼需要成爲一個接口。試着讓員工執行IPerson –
我想我對協方差有一個錯誤的理解。讓我看看我是否得到了一些很好的教程 – ckv