Heim > Backend-Entwicklung > C++ > Wie kann ich mithilfe der „new()'-Einschränkung Argumente an einen generischen Konstruktor in C# übergeben?

Wie kann ich mithilfe der „new()'-Einschränkung Argumente an einen generischen Konstruktor in C# übergeben?

Mary-Kate Olsen
Freigeben: 2025-01-22 13:57:11
Original
211 Leute haben es durchsucht

How Can I Pass Arguments to a Generic Constructor in C# Using the `new()` Constraint?

Verwenden von new()-Einschränkungen in C#, um Parameter an generische Konstruktoren zu übergeben

Wenn Sie Elemente zu einer Liste hinzufügen und versuchen, ein neues Objekt vom Typ T mit Konstruktorparametern zu erstellen, kann es zu einem Kompilierungsfehler kommen, der besagt, dass die Parameter beim Erstellen einer Variableninstanz nicht bereitgestellt werden können. Dieser Fehler tritt auch dann auf, wenn die Klasse Konstruktorparameter enthält.

Um dieses Problem zu lösen, müssen new() Einschränkungen generischer Typen verwendet werden. Während diese Einschränkung die Erstellung von Parametern ohne Instanzen ermöglicht, ist sie für den Fall, dass Konstruktorparameter enthalten sind, nicht ausreichend.

Die Alternative besteht darin, einen Parameter einzuführen, sodass das Objekt basierend auf dem Parameter erstellt wird. Funktionen können dies effizient bewerkstelligen.

<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

Diese Funktion kann mit einem Lambda-Ausdruck aufgerufen werden, der ein neues Objekt mit den erforderlichen Parametern erstellt:

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

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe der „new()'-Einschränkung Argumente an einen generischen Konstruktor in C# übergeben?. 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