2012-06-06 9 views
7

Ich muss eine Klasse entwerfen, in der ein Eigenschaftsname return sein muss, aber wenn ich einen Eigenschaftsnamen wie return erstelle, erhalte ich einen Fehler.Wie verwende ich ein reserviertes Schlüsselwort C# als Eigenschaftsnamen ohne das Präfix @?

Nach einigen Nachforschungen fand ich heraus, dass man ein reserviertes Schlüsselwort als Eigenschaft oder Variablennamen verwenden kann, indem man ein @ Präfix in C# hinzufügt oder es in eckigen Klammern in VB.NET [] einfügt. Zum Beispiel:

var @class = new object(); 

Also hier ist meine Klasse Design-Code.

public class Person 
{ 
    string _retVal; 

    public string @return 
    { 
     get { return _retVal; } 
     set { _retVal = value; } 
    } 
} 

... 
Person p = new Person(); 
[email protected] = "hello"; 

Jetzt bin ich keine Fehler bekommen, aber wenn ich versuche Eigenschaft zuzugreifen Namen wie return dann muss ich den Namen wie @return schreiben, was ich nicht will. Ich möchte auf den Namen der Unterkunft wie p.return = "hello"; statt [email protected] = "hello"; zugreifen, also würde ich gerne wissen, ob es eine Möglichkeit gibt, das zu tun?

+10

Warum gebogen auf reserviertes Schlüsselwort verwenden? –

+3

scheint mir nicht vernünftig. Sie könnten stattdessen einen "Return" -Namen verwenden, der kein reserviertes Schlüsselwort ist. –

+2

Warum nicht 'p.Return' nennen? – phg

Antwort

25

Sie können nicht. Es ist ein reserviertes Stichwort. Das bedeutet "Sie können nicht". Im Gegensatz zu "kontextbezogenen Schlüsselwörtern", was normalerweise bedeutet "wir fügten das später hinzu, also brauchten wir es in einigen bereits existierenden Szenarien".

Die moderate Antwort hier ist: Verwenden Sie @return.

Eine bessere Antwort hier ist: Benennen Sie Ihre Eigenschaft um. Vielleicht ReturnValue.

Es gibt auch die Option von, sagen wir, Return - aber Sie müssen möglicherweise auch über die Groß-/Kleinschreibung nicht zu sprechen Sprachen.

+1

+1 für die Berücksichtigung von Groß- und Kleinschreibung Sprachen - viele Menschen vergessen sie bei der Nennung der Dinge – MattDavey

-2

Keine Möglichkeit, dies zu erreichen, da reservierte Schlüsselwörter vordefinierte, reservierte Bezeichner sind, die für den Compiler eine besondere Bedeutung haben.

ist es besser, Sie Namen Eigenschaft ändern und es in Sie Code verwenden ... etwas wie in @Marc Antwort gegeben ...

+8

... Warum dann Marc Antwort wiederholen? :) –

0

Sie Namespaces wie folgt umbenennen:

using Test = System.Diagnostics;