鑄造清單
考慮以下程式碼:
public interface IDic { int Id { get; set; } string Name { get; set; } } public class Client : IDic { } List<Client> clients = new List<Client>();
List<IDic> dics = (List<IDic>)clients;
轉換為List
Cannot convert type 'System.Collections.Generic.List<Client>' to 'System.Collections.Generic.List<IDic>'
但是,這不是有效的轉換。不允許這種類型的強制轉換,因為它會違反類型安全。如果您嘗試進行此轉換,將會出現以下錯誤:
為什麼不允許此轉換?
public interface IFruit {} public class Apple : IFruit {} public class Banana : IFruit {} ... List<Apple> apples = new List<Apple>(); List<IFruit> fruit = (List<IFruit>)apples; // Assumed cast fruit.Add(new Banana()); // Eek - it's a banana! Apple apple = apples[0];
不允許此轉換的原因是潛在的不安全行為。例如,想像一下這種情況:
在此範例中,List
安全轉換選項
List<IFruit> fruit = apples.ToList<IFruit>();
List<IFruit> fruit = apples.Cast<IFruit>().ToList();
以上是為什麼我不能在 C# 中直接將 `List` 轉換為 `List`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!