Czy da się w C# korzystać ze wskaźników? Jeśli tak, to poproszę o przykład.
Czy da się w C# korzystać ze wskaźników? Jeśli tak, to poproszę o przykład.
Tak, można używać wspaźników, ale powinniśmy tej funkcji używać tylko w wyjątkowych sytuacjach. Aby była możliwość kompilacji takiego kodu, w opcjach projektu należy ustawić "Build/Allow unsafe code". A kod, w którym używamy wskaźników, otoczyć blokiem "unsafe".
Poniżej krótki przykład laboratoryjny:
byte[] b = new byte[8];
unsafe
{
// uzyskanie adresu tablicy - tablica to obiekt zarzadzany-aby jej adres sie
// nie zmienil w czasie odwolac przez wskaznik uzywamy bloku fixed
fixed (byte* p = b)
{
//rzutowanie adresu liczby typu byte na adres typu int
int* i = (int*)p;
//tym sposobem zmieniam 4 kolejne elementy tablicy byte elementy (0-3)
*i = 1857;
//a tu zmieniam kolejne 4 elementy tablicy (4-7)
*(i + 1) = 5678;
//rzutuje adres do int na adres do long, dzieki temu wyświetlam cala tablice
//jako liczbe typu long
Console.WriteLine(*(long*)i);
}
}