c# wskaźnik do na obiekt w tablicy 2d

0

Witam.
W jaki sposób deklaruje się wskaźnik na obiekt w który znajduje się w tablicy (2d).
Moje próby zakończyły się fiaskiem.

linia kodu 112
https://pastebin.com/3ncTfSxE

0

Kilka dni temu pisałem że tablica jest typem referencyjnym .Elementy tablicy znajdują się na zarządzanej stercie .Wskaźników możesz używać tylko
do typów wartościowych takich jak int , które znajdują się na stosie.
Do elementów tablicy możesz się odwoływać za pomocą indeksu .
Zapamiętajcie to ludzie w końcu ;)

2
Zimny Krawiec napisał(a):

Wskaźników możesz używać tylko do typów wartościowych takich jak int , które znajdują się na stosie.

Guzik prawda, w linku przytoczonym powyżej masz chociażby przykład pokazujący że się da, tablica typów wartościowych na stercie: ;)

int[] a = new int[5] { 10, 20, 30, 40, 50 };
// Must be in unsafe code to use interior pointers.
unsafe
{
    // Must pin object on heap so that it doesn't move while using interior pointers.
    fixed (int* p = &a[0])
    {
        // p is pinned as well as object, so create another pointer to show incrementing it.
        int* p2 = p;
        Console.WriteLine(*p2);
        // Incrementing p2 bumps the pointer by four bytes due to its type ...
        p2 += 1;
        Console.WriteLine(*p2);
        p2 += 1;
        Console.WriteLine(*p2);
        Console.WriteLine("--------");
        Console.WriteLine(*p);
        // Dereferencing p and incrementing changes the value of a[0] ...
        *p += 1;
        Console.WriteLine(*p);
        *p += 1;
        Console.WriteLine(*p);
    }
}
0

Masz rację . Tak też można . Zastanawiam się gdzie to się może przydać.
Chciałem zrobić eksperyment polegający na tym że tablica zostanie usunięta ze sterty i na co będzie wskazywał wskaźnik ale nie udało mi się . Nawet wymuszałem odśmiecanie i żaden obiekt nie został usunięty, ani tablica ani inne obiekty, które utworzyłem - niezależnie od ich stopnia złożoności i wielkości .
Robiłem za każdym razem migawkę systemu na różnych etapach działania programu i nic .

0

OK. Doczytałem że obiekty do których odwołuje się "active pinned local variable." nie są usuwane ale dlaczego nie są usuwane inne obiekty ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1