首頁 > 後端開發 > C++ > 如何在 C# 中使用建構函式建立泛型類型的實例?

如何在 C# 中使用建構函式建立泛型類型的實例?

Patricia Arquette
發布: 2025-01-22 13:42:11
原創
963 人瀏覽過

How Can I Create Instances of Generic Types with Constructors in C#?

在C#中使用建構子建立泛型類型的實例

在C#中,使用建構子建立泛型類型的新物件可能是一個挑戰。考慮以下場景:

<code class="language-csharp">// 创建类型为T的对象列表
public static string GetAllItems<T>() where T : new()
{
    ...
    List<T> tabListItems = new List<T>();

    // 尝试使用构造函数参数向列表添加对象
    foreach (ListItem listItem in listCollection) 
    {
        tabListItems.Add(new T(listItem)); // 错误!
    }
    ...
}</code>
登入後複製

嘗試編譯此程式碼時,可能會遇到編譯器錯誤,指出在建立變數T的實例時無法提供參數。這是因為new()約束僅允許建立沒有參數的物件。

解:使用函數

為了克服此限制,您可以提供一個參數,該參數允許基於參數建立物件。一個方便的解決方案是使用函數:

<code class="language-csharp">public static string GetAllItems<T>(..., Func<ListItem, T> del)
{
    ...
    List<T> tabListItems = new List<T>();

    // 使用提供的函数向列表添加对象
    foreach (ListItem listItem in listCollection) 
    {
        tabListItems.Add(del(listItem));
    }
    ...
}</code>
登入後複製

呼叫函數

要使用此函數,您可以如下呼叫它:

<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
登入後複製

這種方法可讓您建立具有建構函數的泛型類型的新對象,即使在泛型函數中也是如此。

以上是如何在 C# 中使用建構函式建立泛型類型的實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板