C# - variable scoping: 'x' deklariert werden können, in diesem Umfang, weil es geben würde, eine andere Bedeutung für 'x'

if(true)
{
    string var = "VAR";
}

string var = "New VAR!";

Dieser Folge:

Fehler 1 Eine lokale variable mit dem Namen 'var'
deklariert werden können, in diesem Umfang
weil es eine andere
Bedeutung 'var', das ist schon
in einem 'Kind' Bereich zu bezeichnen
etwas anderes ist.

Nichts weltbewegendes eigentlich, aber ist das nicht einfach nur falsch? Fellow Entwickler und ich wurden gefragt, ob die erste Erklärung sollte in einem anderen Bereich, so ist die zweite Erklärung kann nicht eingreifen mit der ersten Erklärung.

Warum ist C# nicht in der Lage zu unterscheiden zwischen die beiden Bereiche? Sollte die erste IF-Bereich nicht völlig getrennt vom rest der Methode?

Kann ich nicht aufrufen var von außen, wenn also die Fehlermeldung ist falsch, denn die erste var hat keine Relevanz in dem zweiten Bereich.

Die aktuelle compiler-Fehler ist - Eine lokale variable namens 'x' deklariert werden können, in diesem Umfang, weil es geben würde, eine andere Bedeutung für 'x', die bereits in ein "Elternteil oder der aktuelle" scope zu bezeichnen etwas anderes.
Ähnlich wie stackoverflow.com/questions/296755/child-scope-cs0136
Ich nehme an, du bist mit C# 2.0, da var ist ein Schlüsselwort in C# 3.0.
sieht aus wie Sie fallen in die Falle der Annahme, dass C# viel eher wie C++ aus als es wirklich ist. Versuchen Sie nicht, auf Grund von dem, was C++ nicht, was C# funktioniert -- das ist gefährliches Terrain!
var ist nicht reserved - Schlüsselwort von C# 3.0. "var" bedeutet lediglich "implizit geben diese lokale variable", wenn (1) es wird als die Art der Deklaration einer lokalen Variablen (oder mit der block-decl-oder foreach, oder, und so weiter) UND (2) wenn es nicht einen Typ mit dem Namen "var" bereits im Umfang. C# hat nie Hinzugefügt ein reserviertes Schlüsselwort, da C# 1; alle neuen Schlüsselwörter sind contextual keywords. Sie haben nur Bedeutung als Stichworte, wenn es in den Kontext, der Ihnen die Bedeutung zu; Sie sind juristische Bezeichner sonst.

InformationsquelleAutor | 2010-01-12

Schreibe einen Kommentar