Witam. Czytając na necie, dokładnie na CentrumXP znalazłem artykuł o usuwaniu obiektu, znalazłem dziedzieczenie z IDisposable
, niestety dziwne trochę rozwiązanie jak dla mojego kodu. Chciałem po prostu usunąć mój obiekt i wywołać jednocześnie destruktor. Ustawienie = null
nie wywołuje destruktora, a metodą Dispose()
, jak mówię, nie chcę mi się pisać dodatkowej klasy dla usuwania jednego obiektu. Da się to jakoś inaczej zrobić, aby wywołać destruktor? W reszcie świata nic nie znalazłem interesującego. Dodam jeszcze, że nie jestem pewien czy przez null
nie wywołuje się destruktor, ale obiekty trzymam tylko i wyłącznie w List<>
, od razu w kontruktorze dodaję do niej.
Co rozumiesz przez destrukcję obiektu? Wyczyszczenie zmiennych czy zwolnienie pamięci komputera? Destruktor wywołuje się gdy kończy się czas życia obiektu(program 'opuszcza' blok w którym obiekt jest zadeklarowany), natomiast zwalnianiem pamięci zajmuje się Garbage Collector, który robi to kiedy mu się podoba :P (mocno uproszczając)
@Satirev Nie chodzi mi o samo usuwanie z listy, bo to mam i destruktora nie wywołuje. Przedstawię problem dokładniej. Chciałbym usunąć PictureBox'a, z menu kontekstowego, mam tam opcję "Usuń". Wszystkie instancje, które mają PictureBox'y trzymam w liście i chciałbym usunąć z formy tego PictureBox'a, w momencie usunięcia tego obiektu z listy. W destruktorze dałem PictureBox na null i Dispose i nie wiem czy działa, bo on się wywołuje tylko na koniec programu. Jak wywalić tego PictureBox'a i inne pola z mojej instancji trzymanej w liście?
Żeby usunąć PictureBox z formatki potrzebujesz mniej więcej czegoś takiego: this.Controls.Remove(this.pictureBox1)
.
Ok, spróbuję tak.