2012-06-06 18 views
7

Potrzebuję zaprojektować klasę, w której jedna nazwa właściwości musi być return, ale gdy utworzę nazwę właściwości, taką jak return, pojawia się błąd.Jak używać słowa kluczowego zarezerwowanego C# jako nazwy właściwości bez przedrostka @?

Po kilku badaniach dowiedziałem się, że można użyć zarezerwowanego słowa kluczowego jako nazwy właściwości lub zmiennej, dodając prefiks @ w języku C# lub ujmując go w nawiasy kwadratowe [] w VB.NET. Na przykład:

var @class = new object(); 

Oto mój kod projektu klasy.

public class Person 
{ 
    string _retVal; 

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

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

Teraz nie otrzymuję żadnych błędów, ale gdy próbuję uzyskać dostęp do nazwy właściwości jak return następnie trzeba wpisać nazwę jak @return, którego nie chcę. Chcę uzyskać dostęp do nazwy nieruchomości, takiej jak p.return = "hello"; zamiast [email protected] = "hello";, więc chciałbym się dowiedzieć, czy jest jakikolwiek sposób to zrobić?

+10

Dlaczego wygięte na używając zarezerwowanego słowa kluczowego? –

+3

nie wydaje mi się rozsądne. Zamiast tego możesz użyć nazwy "Zwrot", która nie jest zastrzeżonym słowem kluczowym. –

+2

Dlaczego nie nazwać "p.Return"? – phg

Odpowiedz

25

Nie możesz. Jest to zarezerwowane słowo kluczowe . To oznacza "nie możesz". W przeciwieństwie do "słów kluczowych kontekstowych", co zwykle oznacza "dodaliśmy to później, więc potrzebowaliśmy go do pracy w niektórych wcześniej istniejących scenariuszach".

Umiarkowana odpowiedź tutaj jest: użyj @return.

Lepszą odpowiedzią tutaj jest: zmień nazwę swojej nieruchomości. Być może ReturnValue.

Istnieje również opcja, powiedzmy, Return - ale być może trzeba będzie pomyśleć również o językach niewrażliwych na wielkość liter.

+1

+1 w przypadku języków niewrażliwych na wielkość liter - wiele osób zapomina o nich, gdy nazywa się rzeczy – MattDavey

-2

Nie można tego zrobić, ponieważ zastrzeżone słowa kluczowe są predefiniowane, zastrzeżone identyfikatory, które mają specjalne znaczenie dla kompilatora.

to lepiej zmienić nazwę obiektu i używać go w kodzie ciebie ... coś jak podano w @Marc odpowiedź ...

+8

... dlaczego potem powtórzyć odpowiedź Marca? :) –

0

Można zmienić nazwę przestrzeni nazw tak:

using Test = System.Diagnostics;