Sprawdzanie czy klasa jest "pusta"

0

Hej,

Istnieje jakaś możliwość, by sprawdzić czy klasa jest "pusta". Czyli czy w tej klasie zmienne mają inne wartości niż domyślne, w skrócie czy klasa była użyta i czy były wykonywane operacje na jej "częściach" (metodach, zmiennych, polach itd.).

Próbowałem coś w stylu "klasa != null", ale zaskoczeniem nie jest, że to nie działa.

dziękuję

0

Co próbujesz osiągnąć?

0

Robię coś w stylu wyboru klas postaci. Mam dwie: wilk i samuraj. Domyślnie stworzony jest obiekt klasy wilk i samuraj. Chodzi o to, że jak dwie osoby wybiorą klasę samuraj to powstają obiekty samurai i samurai2. Czyli wszystkie możliwe obiekty, które mogą powstać to samurai, samurai2, wilk, wilk2. I teraz chciałbym sprawdzić które dwa obiekty są używane. Oczywiście różnią się one od tych nieużywanych, tym że w nich pewne akcje i losowania statystyk już zaszły. I dalej jak w pytaniu.

0

Chyba nie ma na tym forum aż takiego eksperta, który pomógłby Ci rozwiązać Twój nietrywialny problem. Myślałeś może o pokazaniu przykładowego kodu?

0

zrob kolekcje i trzymaj w niej aktywne obiekty (czyli jezeli ktos cos zmieni to dodajesz/aktualizujesz w kolekcji) uzyj do tego Dictionary

1

I teraz chciałbym sprawdzić które dwa obiekty są używane.

Słowo klucz- używane. Źle podchodzisz do problemu. Tak naprawdę nie chcesz sprawdzić które obiekty są puste więc Twój kod powinien wyraźnie to przedstawiać. Powinieneś mieć coś odpowiadającego za kontrolowanie używanych obiektów. Ot chociażby wymienioną kolekcję.

Ostatecznie możesz mieć klasę bazową która będzie wystawiła właściwość IsEmpty, i za pomocą refleksji sprawdzała czy wszystkie pola/właściwości obiektu posiadają domyślną wartość, np. default(int). By sprawdzić to generyczne możesz użyć default(T).

5

Rozwiązaniem jest prawidłowy design, a nie szukanie sztuczek w języku. Zrób sobie w klasie pole bool wasChanged i ustawiaj je na true, gdy wykonasz jakąkolwiek operację na obiekcie. To Ci zapewni informacje, których wydaje Ci się, że potrzebujesz.

1

Myślisz że na postawie tych informacji , które podałeś ktoś ci udzieli porady ? Wolne żarty hehehe.
Taki problem pewnie można rozwiązać na wiele sposobów. . Wstaw kod to zobaczymy .
A tak na marginesie , Zanim zabierzesz się za pisanie gier to naucz się podstaw samego języka C# . Wiem że to może jest mało atrakcyjne.
Jak ktoś się uczy na skróty to potem zdaje takie dziwne pytania .

0

To jest wersja konsolowa aplikacji, bardzo skromna. Raczej do powtórzenia nabytej wiedzy, ciężko to nazwać grą. Użyję pola bool wasChanged, myślę że jest ono najbardziej optymalne. Temat do zamknięcia. Dzięki.

0
Barteker napisał(a):

Robię coś w stylu wyboru klas postaci. Mam dwie: wilk i samuraj. Domyślnie stworzony jest obiekt klasy wilk i samuraj. Chodzi o to, że jak dwie osoby wybiorą klasę samuraj to powstają obiekty samurai i samurai2. Czyli wszystkie możliwe obiekty, które mogą powstać to samurai, samurai2, wilk, wilk2. I teraz chciałbym sprawdzić które dwa obiekty są używane. Oczywiście różnią się one od tych nieużywanych, tym że w nich pewne akcje i losowania statystyk już zaszły. I dalej jak w pytaniu.

Twoje objaśnienie nie wiem jak się wiąże z topic-iem. Mam mocne wrażenie dorabiania "czegoś" do źle zaprojektowanego początku.

... Czyli wszystkie możliwe obiekty, które mogą powstać to samurai, samurai2, wilk, wilk2.

Dość to ciężko sobie wyobrazić wilk2 w C# (da się, ale na początku sobie nie wikłaj - a i żaden profesjonalista nie będzie dorabiał kodu do dziwnego designu)

0

Jeśli dobrze rozumiem, to chcesz tworzyć obiekty nawet jeśli nie będą używane. Po co?

0

Również ja się zastanawiam dlaczego nie utworzysz obiektu w momencie użycia? Wtedy sprawdzenie obj != null będzie na miejscu.

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