安全地將 C# 中的 List 轉換為 List
在使用 C# 集合時,您可能會遇到需要將衍生類別物件的清單轉換為基底介面物件的清單的情況。雖然這種轉換看起來很簡單,但在不同類型之間進行強制轉換可能會導致潛在問題。
直接從一種類型強制轉換為另一種類型(例如,從 List
為了安全地在這兩種類型之間進行轉換,我們需要建立一個新的目標類型清單。這可以透過迭代原始列表並將每個元素手動新增到新列表來實現。例如:
<code class="language-csharp">List<Client> clients = new List<Client>(); List<IDic> dics = new List<IDic>(); // 遍历 Client 列表 foreach (Client client in clients) { // 创建一个新的 IDic 对象并设置其属性 IDic dic = new Dic { Id = client.Id, Name = client.Name }; // 将新的 IDic 对象添加到 dics 列表 dics.Add(dic); }</code>
.NET 4 和 C# 4 中的其他選項
在 .NET 4 和 C# 4 中,您可以利用協變的概念來簡化將 IEnumerable 轉換為 IEnumerable 的轉換。這在處理唯讀集合時非常有用:
<code class="language-csharp">// 使用协变将 IEnumerable<Apple> 转换为 IEnumerable<IFruit> List<IFruit> fruit = apples.AsEnumerable<IFruit>().ToList();</code>
但是,要注意的是,協變只適用於只讀集合。如果您在建立 IEnumerable 視圖後修改原始列表,則變更不會反映在派生視圖中。
以上是如何在 C# 中安全地將清單轉換為清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!