Hirdetés

Keresés

Aktív témák

  • pmonitor

    aktív tag

    válasz pmonitor #42 üzenetére

    Ebben a videóban nincs benne, hogy az ELTE leírása is a szöveget az érték típusok közé sorolja. De a valóságban a string olyan referencia típus, mint a huzat. A következő kód ezt hivatott bemutatni(unsafe kódot engedélyezni kell a project-ben):
    using System;
    using System.Collections.Generic;

    namespace TesztCsharp
    {

    internal class Program
    {
    static void Main(string[] args)
    {
    string s = "asdfg";
    Console.WriteLine(s);
    string s2 = s;
    CString(s);
    Console.WriteLine(s);
    Console.WriteLine(s2);
    Console.ReadKey(true);
    return;
    }

    static unsafe void CString(string s)
    {
    fixed (char* ptr = s)
    {
    *ptr = 'z';
    Console.WriteLine("Length: {0}", *(((int*)ptr) - 1));
    }
    }
    }
    }

    Itt látható, hogy az unsafe kód lefutása után s és s2 értéke is megegyezik. A string s2 = s utasítás csak a referenciát adta át.
    Hát az ELTE-n is ilyen blődségeket tanítanak-tanulnak, hogy a szöveg(string) érték típus. Ezek után én már semmin nem csodálkozom...
    De az unsafe kódon látszik, hogy ennek használatához ismerni kell a C-s mutatókat(pointereket).

Aktív témák