2015-06-05 11 views
5

nur um # mit der unsicheren Seite von c MessingZuweisen eines Stringliteral zu einem char *

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(); 
} 

Ist es möglich, eine string wörtliche zu einem char Zeiger genau wie in C zuweisen, oder muss ich es tun wie im obigen Ausschnitt?

Antwort

5

Man könnte so etwas tun:

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

    } 
} 

fixed setzt einen Zeiger auf eine verwaltete Variable und „Stifte“, die Variable, so dass der GC nicht sauber wird nach oben. https://msdn.microsoft.com/en-US/library/f58wzh21(v=vs.80).aspx

+1

Yup, und es ermöglicht Ihnen, die Zeichenfolge im laufenden Betrieb zu ändern. Offensichtlich ist es eine sehr schlechte Idee, dies zu tun. Besonders für internierte Saiten. – Luaan

+2

Daher heißt es "unsicher". – Ralf

Verwandte Themen