Odkryłem, że możesz zacząć swoją nazwę zmiennej znakiem „@” w C #. W moim projekcie C # korzystałem z usługi internetowej (dodałem odnośnik do mojego projektu) napisanej w Javie. Jeden z obiektów interfejsu zdefiniowanych w WSDL miał zmienną składową o nazwie „params”. Oczywiście jest to słowo zastrzeżone w języku C #, więc nie możesz mieć klasy ze zmienną składową o nazwie „params”. Wygenerowany obiekt proxy zawierał właściwość, która wyglądała następująco:
public ArrayList @params {
get { return this.paramsField; }
set { this.paramsField = value; }
}
Przeszukałem dokumentację VS 2008 c #, ale nic nie mogłem znaleźć. Również wyszukiwanie w Google nie dało mi żadnych użytecznych odpowiedzi. Jakie jest zatem dokładne znaczenie lub użycie znaku „@” w nazwie zmiennej / właściwości?
źródło
@
?@
symbolu, tak jak specyfikacja języka C #. Obsługuje to od swojej pierwszej wersji, C # 1.0 (wydanej z .NET 1.0). csharpindepth.com/articles/chapter1/Specifications.aspx[ ]
dokładnego identyfikatora, npDim [String] As String
.Pozwala tylko użyć słowa zarezerwowanego jako nazwy zmiennej. Niezalecane IMHO (z wyjątkiem przypadków takich jak ty).
źródło
yield
słowo kluczowe nie jest słowem zastrzeżonym i można go używać tylko w kontekstach, w których legalnie nie może pojawić się żaden identyfikator . Jednym z celów przy projektowaniu nowych funkcji dla C # jest skonstruowanie ich w taki sposób, aby każdy program, który byłby legalny przed dodaniem nowej funkcji, był później legalny i miał takie samo znaczenie .@Html.TextboxFor( , , , new { @class="my-css-class" } )
to dobry przykład, w którym tak naprawdę nie można się obejść bez konieczności ręcznego pisania kodu HTML lub konieczności zmiany atrybutów javascript na późniejszym etapie.W języku C # znak at (@) jest używany do oznaczenia literałów, które jawnie nie są zgodne z odpowiednimi regułami w specyfikacji języka.
W szczególności można go stosować do nazw zmiennych, które kolidują z zastrzeżonymi słowami kluczowymi (np. Nie można używać parametrów, ale można zamiast tego używać @params, podobnie jak w przypadku out / ref / dowolnego innego słowa kluczowego w specyfikacji języka). Dodatkowo może być używany do literałów ciągów bez kształtów; jest to szczególnie istotne w przypadku stałych ścieżki, np. zamiast
path = "c:\\temp\\somefile.txt"
pisaćpath = @"c:\temp\somefile.txt"
. Jest to również bardzo przydatne w przypadku wyrażeń regularnych.źródło
W przeciwieństwie do znaków Perla,
@
przedrostek przed nazwą zmiennej w języku C # nie ma znaczenia. Jeślix
jest zmienną,@x
to inna nazwa tej samej zmiennej.Ale
@
prefiks ma zastosowanie , jak odkryłeś - możesz go użyć do wyjaśnienia nazw zmiennych, które w przeciwnym razie C # odrzuciłby jako nielegalny.źródło
@
Symbol pozwala używać zarezerwowanych słów kluczowych dla nazwy zmiennej. jak@int
,@string
,@double
itd.Na przykład:
Powyższy kod działa dobrze, ale poniżej nie będzie działać:
źródło
Pozwala po prostu używać słów zastrzeżonych jako nazw zmiennych. Chciałem var, który nazwał
event
kiedyś. Miałem zamiar_event
zamiast tego, ale mój kolega przypomniał mi, że mogę po prostu to nazwać@event
.źródło
Innym przypadkiem użycia są metody rozszerzenia. Pierwszy specjalny parametr można wyróżnić, aby nazwać jego prawdziwe znaczenie
@this
nazwą. Przykład:źródło
Jeśli użyjemy słowa kluczowego jako nazwy identyfikatora, otrzymamy błąd kompilatora: „oczekiwany identyfikator,„ nazwa identyfikatora ”jest słowem kluczowym”. Aby przezwyciężyć ten błąd, należy poprzedzić identyfikator „@”. Takie identyfikatory są dosłownie identyfikatorami. Znak @ nie jest tak naprawdę częścią identyfikatora, więc identyfikator może być postrzegany w innych językach jako normalny identyfikator, bez prefiksu
źródło
Możesz go użyć, aby użyć zastrzeżonych słów kluczowych jako nazwy zmiennej, takiej jak
kompilator zignoruje
@
i skompiluje zmienną jakoint
używanie myśli nie jest powszechną praktyką
źródło