Heim > Backend-Entwicklung > C++ > Wie kann ich arithmetische Operatoren für eingeschränkte generische Klassen in C# überladen?

Wie kann ich arithmetische Operatoren für eingeschränkte generische Klassen in C# überladen?

Linda Hamilton
Freigeben: 2025-01-11 12:41:43
Original
678 Leute haben es durchsucht

How Can I Overload Arithmetic Operators for Constrained Generic Classes in C#?

Überladung des arithmetischen Operators einer generischen Klasse in C#

In C# erfordert das Überladen arithmetischer Operatoren für eine generische Klasse eine Möglichkeit, sicherzustellen, dass der generische Typ arithmetische Operationen unterstützt. Der bereitgestellte Code zeigt, dass der Operator nicht ohne bestimmte Einschränkungen auf einen generischen Typ T angewendet werden kann.

Um dieses Problem zu lösen, können wir die Schnittstelle IConvertible als Einschränkung für die generische Klasse verwenden. Diese Schnittstelle definiert eine Reihe von Methoden zum Konvertieren zwischen verschiedenen Datentypen, einschließlich numerischer Typen. Hier ist ein Beispiel für die Implementierung der Überladung arithmetischer Operatoren mithilfe der IConvertible-Einschränkung:

public static operator T +(T x, T y)
where T : IConvertible
{
    Type type = typeof(T);
    if (type == typeof(string) ||
        type == typeof(DateTime)) throw new ArgumentException($"类型 {type.FullName} 不受支持", "T");

    try { return (T)(object)(x.ToDouble(NumberFormatInfo.CurrentInfo) + y.ToDouble(NumberFormatInfo.CurrentInfo)); }
    catch (Exception ex) { throw new ApplicationException("操作失败。", ex); }
}
Nach dem Login kopieren

Diese Implementierung prüft auf nicht unterstützte Typen (z. B. Zeichenfolgen und Datumsangaben) und konvertiert die Operanden in Double-Werte, bevor die Additionsoperation ausgeführt wird. Dadurch können arithmetische Operationen an generischen numerischen Typen ausgeführt werden.

Mithilfe der Einschränkung IConvertible können wir arithmetische Operatoren für generische Klassen definieren, die primitive numerische Typen akzeptieren, die arithmetische Operationen unterstützen. Dies bietet eine flexible und skalierbare Lösung für die Arbeit mit numerischen Daten in generischem Code.

Das obige ist der detaillierte Inhalt vonWie kann ich arithmetische Operatoren für eingeschränkte generische Klassen in C# überladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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