Heim > Backend-Entwicklung > C++ > Wie kann ich Instanzen generischer Typen mit Konstruktoren in C# erstellen?

Wie kann ich Instanzen generischer Typen mit Konstruktoren in C# erstellen?

Patricia Arquette
Freigeben: 2025-01-22 13:42:11
Original
963 Leute haben es durchsucht

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

Erstellen von Instanzen generischer Typen mithilfe von Konstruktoren in C#

In C# kann die Verwendung von Konstruktoren zum Erstellen neuer Objekte generischer Typen eine Herausforderung sein. Stellen Sie sich das folgende Szenario vor:

<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>
Nach dem Login kopieren

Beim Versuch, diesen Code zu kompilieren, kann ein Compilerfehler auftreten, der besagt, dass beim Erstellen einer Instanz der Variablen T kein Argument angegeben werden kann. Dies liegt daran, dass die Einschränkung new() nur die Erstellung von Objekten ohne Parameter zulässt.

Lösung: Funktion

verwenden

Um diese Einschränkung zu überwinden, können Sie einen Parameter bereitstellen, der die Erstellung des Objekts basierend auf dem Parameter ermöglicht. Eine praktische Lösung ist die Verwendung einer Funktion:

<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>
Nach dem Login kopieren

Aufruffunktion

Um diese Funktion zu nutzen, rufen Sie sie wie folgt auf:

<code class="language-csharp">GetAllItems<Foo>(..., l => new Foo(l));</code>
Nach dem Login kopieren

Dieser Ansatz ermöglicht es Ihnen, mit einem Konstruktor neue Objekte eines generischen Typs zu erstellen, sogar innerhalb einer generischen Funktion.

Das obige ist der detaillierte Inhalt vonWie kann ich Instanzen generischer Typen mit Konstruktoren in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage