In C#, der folgende Code nicht kompiliert:Warum können C# -Membernamen nicht mit dem umschließenden Typnamen übereinstimmen?
class Foo {
public string Foo;
}
Die Frage ist: Warum?
Genauer gesagt, ich verstehe, dass dies nicht kompilieren, weil (ich zitiere):
Mitgliedsnamen können nicht die gleiche sein wie ihre einschließenden Typ
Ok, gut. Ich verstehe das, ich werde es nicht noch einmal tun, das verspreche ich.
Aber ich verstehe wirklich nicht warum der Compiler weigert sich, ein Feld mit dem gleichen Namen wie ein umschließender Typ zu nehmen. Was ist das zugrunde liegende Problem, das mich daran hindert?
Dies ist wahrscheinlich die beste, vollständigste Antwort hier. In VB (ich glaube, ich habe gerade ein wenig in den Mund gekotzt) der Ctor ist Sub New() ... –
Meinst du "verhindert die Schaffung eines Mitglieds" die Art, wie er es in der Frage beschreibt? Ja, das ist der ganze Grund für diese Frage. Wenn du meinst wie 'public string Foo {erhalten; set;} public void Foo() {}', dann ist das auch nicht erlaubt. – jcolebrand
Die Frage ist, ob nur C# es nicht erlaubt oder wenn das .net-Typsystem es nicht erlaubt. Und ich denke, es ist nur C#. – CodesInChaos