C# -> @ символ

7 отговора 422 прегледа
#1

C# -> @ символ

Здравейте!

Значи, имам един ArrayList със стрингове. Когато искам да взема кой да е елемент от тоз масив и да го присвоя на един прост стринг обект, .НЕТ- а ми цопва едно @ пред стринга в случай, че в него има escape символи от рода на '\n'. Някой да има идея как да го махна тва чудо, че искам да използвам тези символи?

К

Отговор
в отговор на madagadaguda #2

Re: C# -> @ символ

Сега сам ше си отговоря... (с помощта на Дешев ъфкорс):
myString.Replace("\\n", "\n");

Адско е:)

Отговор
в отговор на Zombie #4

Re: C# -> @ символ

Ти пък си много хубав...

Отговор
в отговор на madagadaguda #5

Re: C# -> @ символ

я, тука някой цапа с голямата лопата ... това което наричаш "решение" е просто кофти patch на още по кофти код ...

@ символа не е част от стринг-а, а е част от синтаксиса на С#, който се обработва от компилатора в момента на декларирането му, а не в момента на ваденето му от array, hashtable, list, или откъдето си го напъхал ...

така че няма как .net-a да ти "цопне" нищо никъде освен ако сам не си го "цопнеш" ...

примерно, този код:


string s1 = "hello \n world \t";
string s2 = @"hello \n world \t";

след като мине през С# компилатора се генерира в следния IL код:

ldstr "hi \nBye\tNo"
ldstr "hi \\nBye\\tNo"

както виждаш компилатора замества всеки <escape char> с <back slash><escape char> в момента на декларация, и когато се attach-ва към него string reference той вече е форматиран ... така че като напъхваш един стринг в array, ти напъхваш само reference-a ... и колкото и да го пъхаш и вадиш, ти пъхаш и вадиш само референса ... това с нищо не променя съдържанието на стринга ... а да не говорим че стринговете в .нет са immutable ...

така че провери си кво правиш там където създаваш стринговете, а не там където вадиш референсите ...





XM TurboCT .. where comfort meets power
Отговор