Entwickler-Ecke
C# - Die Sprache - Konstruktor mit this()
CarpeDiem - Di 13.04.10 20:16
Titel: Konstruktor mit this()
Hallo,
weiß jemand was der Unterschied zwischen den folgenden Zuweisungen ist?
C#-Quelltext
1: 2: 3: 4:
| public Circle(double radius) : this() { this.Radius = radius; } |
C#-Quelltext
1: 2: 3: 4:
| public Circle(double radius) : this() { Radius = radius; } |
Was bewirkt eigentlich die Schnittstelle
": this()"?
Vielen Dank gleich mal.
Kha - Di 13.04.10 20:29
CarpeDiem hat folgendes geschrieben : |
weiß jemand was der Unterschied zwischen den folgenden Zuweisungen ist? |
Es gibt keinen (solange du keine lokale Variable
Radius einfügst). Um es klar zu stellen: Das hat nichts mit dem Konstruktor zu tun und funktioniert nicht nur bei Properties, sondern mit allen Membern der Klasse.
CarpeDiem hat folgendes geschrieben : |
Was bewirkt eigentlich die Schnittstelle ": this()"? |
Interfaces bei Methoden? Das wäre interessant ;) .
Mit
: this(...) kannst du andere Konstruktoren derselben Klasse aufrufen, mit
: base(...) die der Base Class.
CarpeDiem - Di 13.04.10 20:48
Danke. Das heißt, ich benötige den "this()" bei überladenen Konstruktoren, also in diesem Fall?
Beziehungsweise, was bringt mir die folgende Parameterliste mit
": this(radius)"?
C#-Quelltext
1: 2: 3: 4:
| public Circle(double radius, int xPos, int yPos) : this(radius) { XKoordinate = xPos; YKoordinate = yPos; } |
Kha - Di 13.04.10 21:02
"Benötigen" tust du es überhaupt nicht, du vermeidest dadurch einfach, in beiden Konstruktoren den gleichen Code schreiben zu müssen. Also nicht anders, als es bei gewöhnlichen überladenen Methoden der Fall ist.
Ein
: base kann allerdings in manchen Fällen obligatorisch sein:
http://msdn.microsoft.com/en-us/library/ms173115.aspx hat folgendes geschrieben: |
In a derived class, if a base-class constructor is not called explicitly using the base keyword, then the default constructor, if there is one, is called implicitly. This means that the following constructor declarations are effectively the same:
C#-Quelltext 1: 2: 3: 4:
| public Manager(int initialdata) { } |
C#-Quelltext 1: 2: 3: 4:
| public Manager(int initialdata) : base() { } |
If a base class does not offer a default constructor, the derived class must make an explicit call to a base constructor using base. |
CarpeDiem - Mi 14.04.10 12:30
Dankeschön :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!