devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
1 minut

Słowa kluczowe jako identyfikatory w C#


25.03.2010

Może nas czasami najść ochota na nazwanie jakieś zmiennej czy klasy słowem kluczowym, zarezerwowanym w C#. Standardowa deklaracja, taka jak ta:

  1:  public class class
  2:  {
  3:  	
  4:  }

zakończy sie błędem kompilacji.

Rozwiązaniem problemu jest wstawienie małpy przed danym identyfikatorem… i już możemy nazywać wszystko jak nam się żywnie podoba:

  1:  public class @class
  2:  {
  3:  	
  4:  }

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
mt3o

A potem słowo class bez małpy będzie oznaczało to, co normalnie oznacza, czy naszą klasę? Jeśli to, co zwykle, to czy można pisać _class zamiast @class? Albo stosować inny dozwolony znak jako przedrostek?

Czy nazywanie klasy tak jak element składni nie jest błędem zaburzającym czytelność kodu? Po co to robić?

procent

@mt3o: Na poziomie C# odwołujemy się do takiego elementu tak samo jak go zadeklarowaliśmy, z @. Można stosować jakikolwiek inny przedrostek, z tą różnicą, że identyfikatory z małpą (czyli np. ‘@class’) na poziomie IL są już widoczne jako identyfikatory bez małpy (czyli normalnie ‘class’) – można sobie to obejrzeć Reflectorem. Pytanie "po co to robić" jest jak najbardziej słuszne:). W sumie to ciekawostka, która niekoniecznie musi się przydać w przyszłości. Ja używam tego tylko w jednym scenariuszu: ApplicationEvents. Podczas opisywania mechanizmu (tutaj: http://www.maciejaniserowicz.com/post/2009/09/07/Application-Events.aspx ) zamieniłem "@event" na "e", ale w kodzie parametr reprezentujący zdarzenie nazywam właśnie "@event". Jeśli miałbym to… Read more »

Paweł Łukasik

Przykład z @event to także jedyna sytuacja, w którym ja stosuję małpkę poprzedzając nazwę. W innym przypadku poprzedzanie słów kluczowych @ nie ma chyba sensu.

Pozdrawiam,
Paweł

ll
ll

tylko po co to?

PiotrB

chyba jeszcze do integracji z projektami w innych językach: kod VB.NET: Imports System.Windows.Forms Public Class Class1 Public Sub bealed() MessageBox.Show("bealed") End Sub Public Sub sealed() MessageBox.Show("sealed") End Sub End Class wywołujący kod C#: private static void tester() { ClassLibrary1.Class1 c = new ClassLibrary1.Class1(); c.bealed(); c.@sealed(); }

dario-g

Po co to? Ano naprzyklad po to:

<%=Html.TextBoxFor(x => x.Name, new { @class = "text", maxlength = 200 })%>

procent

No i jest odpowiedź "po co" – dzięki, sam się czegoś dowiedziałem :).

Moja książka

Facebook

Zobacz również