首頁 >後端開發 >C++ >如何在 C# 中安全地將清單轉換為清單?

如何在 C# 中安全地將清單轉換為清單?

Barbara Streisand
Barbara Streisand原創
2025-01-17 00:46:09226瀏覽

How to Safely Convert a List to a List in C#?

安全地將 C# 中的 List 轉換為 List

在使用 C# 集合時,您可能會遇到需要將衍生類別物件的清單轉換為基底介面物件的清單的情況。雖然這種轉換看起來很簡單,但在不同類型之間進行強制轉換可能會導致潛在問題。

直接從一種類型強制轉換為另一種類型(例如,從 List 到 List)在 C# 中是不可能的,因為它會導致不安全的運算。嘗試這種強制轉換可能會導致異常或意外行為。

為了安全地在這兩種類型之間進行轉換,我們需要建立一個新的目標類型清單。這可以透過迭代原始列表並將每個元素手動新增到新列表來實現。例如:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn