Heim >Backend-Entwicklung >C++ >Wie gehe ich mit der Rückgabe von Null aus generischen Methoden in C# um?
Nullwert in der generischen C#-Methode zurückgeben
Beim Erstellen generischer Methoden können Entwickler auf das Problem stoßen, dass Methoden mit generischen Typparametern Nullwerte zurückgeben. Im bereitgestellten Codeausschnitt:
<code class="language-csharp">static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach (T thing in collection) { if (thing.Id == id) return thing; } return null; // 错误:无法将 null 转换为类型参数 'T' }</code>
Der Compiler generiert die Fehlermeldung „Null kann nicht in den Typparameter ‚T‘ konvertiert werden, da es sich möglicherweise um einen Werttyp handelt. Erwägen Sie stattdessen die Verwendung von ‚default(T)‘.“ Dies liegt daran, dass Sie für einen generischen Typ, der einen Werttyp (Struktur) enthält, nicht direkt null zurückgeben können.
Fehler beheben
Um dieses Problem zu lösen, haben Entwickler drei Möglichkeiten:
Standardwert zurückgeben: Verwenden Sie das Schlüsselwort default
oder default(T)
, um den Standardwert vom Typ T zurückzugeben. Dies gibt null für Referenztypen, 0 für Ganzzahlen und ' für Zeichen zurück ' usw.
Generische Typen einschränken: Wenn eine Methode darauf beschränkt werden kann, nur Referenztypen zurückzugeben, können Sie eine where T : class
-Einschränkung hinzufügen. Dies ermöglicht die direkte Rückgabe von Null.
Nullwerte als nullbare Werte zurückgeben: Wenn eine Methode darauf beschränkt werden kann, nur Nicht-Null-Werttypen zurückzugeben, kann die where T : struct
-Einschränkung verwendet werden. In diesem Fall kann null als Nullwert eines nullbaren Werttyps zurückgegeben werden.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit der Rückgabe von Null aus generischen Methoden in C# um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!