webForumDet fria alternativet

Vad betyder @ i denna kodsnutt? (C#)

.NET

1 svar · 436 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1
Load(GUIGraphicsContext.Skin+@"\file.xml")

Om jag översätter detta till VB.NET via en konverterare så får jag:

Load(GUIGraphicsContext.Skin+"\file.xml")

Men vad stod @ för? :)

Medlem sedan maj 200010 687 inlägg
#2

I C# måste man escapea backslash med ett backslash. Men om man skriver @ före så behöver man inte det. Och man kan även göra radbrytningar i strängen. Citattecken escapeas med citattecken.
Exempel:

Load(GUIGraphicsContext.Skin+@"\file.xml")

är samma som...

Load(GUIGraphicsContext.Skin+"\\file.xml")

Går också att skriva:

string foo = @"Rad 1
Rad 2";

istället för...

string foo = "Rad 1\r\nRad 2";

Skriver man regulära uttryck så är @ vettigt eftersom att man annars behöver escapea backslash dubbelt eftersom man kanske vill göra det i regex:et och det gör regex:et bara ännu mer krångligt än vad det kanske redan är.
Exempel:

string pattern = @"(\w*)\\\d+)\s\\";

istället för...

string pattern = "(\\w*)\\\\\\d+)\\s\\\\";
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)