2015-06-05 2 views
5

просто возиться с небезопасной стороной C#Присвоить строку литерала полукокса *

unsafe { 
    char* m = stackalloc char[3+1]; 
    m[0] = 'A'; 
    m[1] = 'B'; 
    m[2] = 'C'; 
    m[3] = '\0'; 
    for (char* c = m; *c != '\0'; c++) { 
     Console.WriteLine(*c); 
    } 
    Console.ReadLine(); 
} 

Можно ли назначить string буквальные к char указателю так же, как в C или я должен сделать это как в приведенном выше фрагменте?

ответ

5

Вы могли бы сделать что-то вроде этого:

string m = "abc"; 
unsafe 
{ 
    fixed (char* pm = m) 
    {    

    } 
} 

fixed устанавливает указатель на управляемую переменную и «контакты», что переменная поэтому GC не будет очищать его. https://msdn.microsoft.com/en-US/library/f58wzh21(v=vs.80).aspx

+1

Yup, и это позволяет вам изменять строку на лету. Очевидно, что это очень плохая идея. Особенно для интернированных струн. – Luaan

+2

Поэтому его называют «небезопасным». – Ralf

Смежные вопросы