Überladen des Operators + zum Hinzufügen von zwei Arrays

7

Was ist falsch an diesem C # -Code? Ich habe versucht, den Operator + zu überladen, um zwei Arrays hinzuzufügen, aber eine Fehlermeldung wie folgt erhalten:

Einer der Parameter eines binären Operators muss der umgebende Typ sein.

%Vor%     
Anton Kreuzer 06.11.2009, 12:50
quelle

5 Antworten

16

Operatoren müssen in einem "verwandten" Klassenkörper deklariert sein. Zum Beispiel:

%Vor%

Da Sie keinen Zugriff auf die Implementierung von Arrays haben, sollten Sie Ihre Arrays entweder in Ihre eigene Implementierung einbinden, um zusätzliche Operationen bereitzustellen (und dies ist die einzige Möglichkeit, um den Operator + arbeiten zu lassen.) / p>

Auf der anderen Seite könnten Sie eine Erweiterungsmethode wie folgt definieren:

%Vor%

Das führt immer noch zu natürlichen Aufrufen ( x.Add(y) ), während das Umbrechen von Arrays in Ihrer eigenen Klasse vermieden wird.

    
Bryan Menard 06.11.2009, 13:00
quelle
2

Es besagt, dass einer der Parameter für den Operator vom gleichen Typ sein muss wie die Operatorfunktion. Wenn also die Operatorfunktion ein Mitglied von MyClass ist, muss einer der Parameter vom Typ MyClass sein.

%Vor%     
Joakim Karlsson 06.11.2009 13:00
quelle
2

Sie können etwas wie folgt verwenden:

%Vor%

Basierend auf einem verwandten Beitrag , den ich geschrieben habe.

    
Jordão 29.08.2010 02:09
quelle
1

Wenn Sie den Operator le + zwischen Typ AA und BB überladen wollen, müssen Sie dies in der Klasse AA oder BB tun und nicht in einer Klasse namens Programm (wie Sie es getan haben).

Leider können Sie keinen Code in der Klasse Array schreiben.

Was Sie tun können, ist

  • Erstellen Sie Ihre eigene Klasse, die IList
  • implementiert
  • und setze den + Operator auf diese Klasse.

Wenn Sie eine detailliertere Implementierung benötigen, fragen Sie mich einfach.

    
Manitra Andriamitondra 06.11.2009 12:59
quelle
1

Sie können Operatoren nur zu einem Typ hinzufügen, den Sie selbst erstellt haben. A int[] ist ein eingebauter Typ, dem Sie keine Operatoren hinzufügen können.

Sie könnten Ihre eigene Klasse erstellen, die ein Array einkapselt und den Operator dazu hinzufügt.

    
Guffa 06.11.2009 13:02
quelle

Tags und Links