2013-03-06 5 views
7

Myślę, że moje pytanie jest inne od tego: What's the @ in front of a string in C#?Co to jest @ przed zmienną/identyfikatorem w C#?

Pracuję w VB.NET, więc może to być jakaś prosta rzecz w C#, ale nie jestem tego świadomy.

Mam następujący kod, w którym mam 10 XML wewnątrz zmiennej łańcuchowej. Proszę o poradę co @ symbol jest potrzebne przed zmiennej claimsList strun podczas wywoływania metody LoadXml we fragmencie kodu poniżej:

private void UploadNewClaims(PMAUser grumble, string companyAbbreviation, string claimsList) 
{ 
    var claimDoc = new System.Xml.XmlDocument(); 
    claimDoc.LoadXml(@claimsList); 

Odpowiedz

20

W tym przypadku jest to zupełnie niepotrzebne, ale pozwala na użycie dowolnego słowa kluczowego jako identyfikator w DO#. Nie zmienia to w ogóle znaczenia identyfikatora ani sposobu jego użycia - informuje on kompilator, że nie trzeba rozpoznawać następujących znaków jako słowa kluczowego.

Na przykład:

string @int = "hello"; 
var @void = @int; 

Używanie go do identyfikatora claimsList sugeruje, że ten, kto napisał, że nie rozumie. Fakt, że identyfikator jest dla zmiennej łańcuchowej, to całkowicie nieistotny tutaj.

Osobiście mam dość dużo tylko kiedykolwiek użył funkcji dla metod rozszerzenie, gdzie były znane wywołać pierwszy parametr @this:

public static void Foo(this Bar @this) 
{ 
    return @this.Baz() * 2; 
} 
+1

Nicea wyjaśnienia .. – Smaug

+1

sobie wyobrazić, że jest tam, ponieważ @ w pewnym momencie był to ciąg literowy ścieżki, taki jak @ "C: \ ścieżka". Zakładam, że gdy zmieniono ją na zmienną, osoba dokonująca zmiany nie zrozumiała składni "" i pozostawił @ na miejscu. – Grokys

+0

I googled to, ponieważ widziałem '@ this' jako parametr dla metody rozszerzenia hah. Piekło, które jest użyteczne. Punkt pokazany, ale niepisany: 'Musisz używać @variable także podczas rozmowy, nie tylko dla deklaracji'. – C4u