C# Generika lassen sich nicht addieren?

4 Antworten

Für den generischen Typ t weiß der Compiler halt nicht, wie eine Addition definiert ist.

Was ist, wenn t etwas ist, für das kein Operator + existiert?

Tier + Tier? Schwein + Nashorn?

Du musst also entweder für t den + Operator überladen, oder über ein where constraint den Typ auf jene beschränken, für die Addition definiert ist.

Woher ich das weiß:Berufserfahrung – Berufserfahrung
Palladin007  04.11.2021, 10:59
Du musst also entweder für t den + Operator überladen

Das geht nicht.

über ein  where constraint den Typ auf jene beschränken, für die Addition definiert ist

Das geht schon, ist aktuell aber ziemlich sinnlos, da man für sowas eine eigene Basisklasse (braucht man für den Operator) schreiben und für die Werte entsprechende Ableitungen verwenden muss - einfach int oder double geht nicht.

Das soll sich aber ändern, wenn es statische Interface-Member (wie Operatoren) gibt, dann kann man dieses Interface als Constraint benutzen und anschließend auf die darin definierten statischen Member zugreifen.

1

T kann alles sein, auch bool. Bool + bool ist aber nicht möglich, deshalb wird es nicht gehen denke ich

Kann man keine generischen Additionsmethoden erstellen? C#

Das funktioniert so natürlich nicht, da der Typ nunmal generisch ist und der Compiler nicht jeden Typen addieren kann.

Du kannst + Operatoren überladen - unär oder binär - und somit selbst definieren, was dann passieren soll.

CodenLernen 
Fragesteller
 04.11.2021, 11:04

Wann genau nutzt man denn dann generische Klassen und Methoden in der Praxis?

0

Du brauchst ein Typargument, das auch addierbar ist.