Discussion:
Zuweisungsoperator (=) in C# überladen
(zu alt für eine Antwort)
Peter
2005-05-13 13:20:08 UTC
Permalink
Hallo NG,

wie überlade ich den Zuweisungsoperator (=) in C#?
In C++ ist sowas ja möglich.

Gruß Peter
Herfried K. Wagner [MVP]
2005-05-13 13:27:41 UTC
Permalink
Hallo Peter!
Post by Peter
wie überlade ich den Zuweisungsoperator (=) in C#?
In C++ ist sowas ja möglich.
Die Operatoren '=', '.', '?:', '->', 'new', 'is', 'sizeof', 'typeof'
können in C# nicht überladen werden.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Peter
2005-05-13 13:40:02 UTC
Permalink
Wie könnte ich dann trotzdem auf ein Zuweisungsereignis reagieren??

Bei der Zuweisung einer Objektinstanz meiner Klasse A zu einer Variablen vom
Typ
A soll automatisch eine Eigenschaft der zugewiesenen Objektinstanz geändert
werden.

Gruß Peter
Post by Herfried K. Wagner [MVP]
Hallo Peter!
Post by Peter
wie überlade ich den Zuweisungsoperator (=) in C#?
In C++ ist sowas ja möglich.
Die Operatoren '=', '.', '?:', '->', 'new', 'is', 'sizeof', 'typeof'
können in C# nicht überladen werden.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Thomas Krause
2005-05-13 18:43:42 UTC
Permalink
Nenn am Besten mal eine konkretere Problemstellung, wo das Überladen
notwendig wäre.

Dann ist es einfacher für uns den entsprechenden Lösungsansatz für C# zu
finden.

Thomas Krause
Post by Peter
Wie könnte ich dann trotzdem auf ein Zuweisungsereignis reagieren??
Bei der Zuweisung einer Objektinstanz meiner Klasse A zu einer Variablen vom
Typ
A soll automatisch eine Eigenschaft der zugewiesenen Objektinstanz geändert
werden.
Gruß Peter
Post by Herfried K. Wagner [MVP]
Hallo Peter!
Post by Peter
wie überlade ich den Zuweisungsoperator (=) in C#?
In C++ ist sowas ja möglich.
Die Operatoren '=', '.', '?:', '->', 'new', 'is', 'sizeof', 'typeof'
können in C# nicht überladen werden.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Pascal Schmitt
2005-05-13 19:37:49 UTC
Permalink
Hallo!
Post by Peter
Bei der Zuweisung einer Objektinstanz meiner Klasse A zu einer Variablen vom
Typ
A soll automatisch eine Eigenschaft der zugewiesenen Objektinstanz geändert
werden.
Also wie eine Default-Eigenschaft in Visual Basic? (Da ging das doch
afair: EinButton = "Caption")

Auch wenn es möglich wäre, würde ich es dir nicht empfehlen, denn ein
Programmierer erwartet ja eigentlich eine bestimmte Verhaltensweise von
einem Operator, wenn der +-Operator plötzlich multiplizieren würde wäre
es auch ziemlich blöd...


--
Pascal Schmitt
Thomas Krause
2005-05-13 22:42:41 UTC
Permalink
Ich glaube nicht, das das mit der Default-Eigenschaft auch bei Zuweisungen
funktioniert hat in VB.

Wie sollte man den sonst der Variablen wirklich einen anderen Wert zuweisen?

Also was ist z.B. bei:
EinButton = ZweiterButton

macht der dann daraus:
EinButton.Caption = ZweiterButton.Caption

oder:
EinButton = ZweiterButton

oder eine Mischform aus beidem?

AFAIR waren Defaulteigenschaften nur für R-Werte da.

Thomas Krause
Post by Pascal Schmitt
Hallo!
Post by Peter
Bei der Zuweisung einer Objektinstanz meiner Klasse A zu einer Variablen
vom Typ
A soll automatisch eine Eigenschaft der zugewiesenen Objektinstanz
geändert werden.
Also wie eine Default-Eigenschaft in Visual Basic? (Da ging das doch
afair: EinButton = "Caption")
Auch wenn es möglich wäre, würde ich es dir nicht empfehlen, denn ein
Programmierer erwartet ja eigentlich eine bestimmte Verhaltensweise von
einem Operator, wenn der +-Operator plötzlich multiplizieren würde wäre es
auch ziemlich blöd...
--
Pascal Schmitt
Herfried K. Wagner [MVP]
2005-05-15 00:20:44 UTC
Permalink
Hallo Thomas!
Post by Thomas Krause
Ich glaube nicht, das das mit der Default-Eigenschaft auch bei Zuweisungen
funktioniert hat in VB.
Wie sollte man den sonst der Variablen wirklich einen anderen Wert zuweisen?
EinButton = ZweiterButton
EinButton.Caption = ZweiterButton.Caption
Ja.
Post by Thomas Krause
EinButton = ZweiterButton
Nein, da in VB Referenzzuweisungen nur mit 'Set' funktionieren, also 'Set
EinButton = ZweiterButton'. Deshalb gab es keine Mehrdeutigkeit.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://classicvb.org/petition/>
Loading...