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>
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>
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!