Sprawdzanie czy klasa jest "pusta"

Odpowiedz Nowy wątek
2018-08-13 11:46

Rejestracja: 2 lata temu

Ostatnio: 3 dni temu

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ę

Pozostało 580 znaków

2018-08-13 11:53
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Wrocław

0

Co próbujesz osiągnąć?


Pozostało 580 znaków

2018-08-13 12:05

Rejestracja: 2 lata temu

Ostatnio: 3 dni temu

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.

Pozostało 580 znaków

2018-08-13 12:25

Rejestracja: 4 lata temu

Ostatnio: 7 godzin temu

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?

edytowany 1x, ostatnio: Burmistrz, 2018-08-13 12:31

Pozostało 580 znaków

2018-08-13 12:35

Rejestracja: 8 lat temu

Ostatnio: 2 dni temu

0

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

Pozostało 580 znaków

2018-08-13 14:09

Rejestracja: 3 lata temu

Ostatnio: 2 godziny temu

Lokalizacja: UK

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).


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.

Pozostało 580 znaków

2018-08-13 16:27
Moderator

Rejestracja: 11 lat temu

Ostatnio: 2 godziny temu

Lokalizacja: Wrocław

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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2018-08-13 16:27

Pozostało 580 znaków

2018-08-13 17:33

Rejestracja: 1 rok temu

Ostatnio: 1 miesiąc temu

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 .

@Zimny Krawiec: przecież somekind podał spoko rozwiązanie. - WeiXiao 2018-08-13 19:33
myślę że (na podstawie w/w rozwiązania albo i nie) strzał w stopę kolega ma jeszcze przed sobą. Popieram @Zimny Krawiec - AnyKtokolwiek 2018-08-13 20:14

Pozostało 580 znaków

2018-08-13 19:36

Rejestracja: 2 lata temu

Ostatnio: 3 dni temu

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.

"skromność" nie ma nic do braku podstaw w języku (konsolo jest ok), a już zwłaszcza jak informujesz że chodzi o "powtarzanie wiedzy" - AnyKtokolwiek 2018-08-13 20:18

Pozostało 580 znaków

2018-08-13 20:12

Rejestracja: 1 rok temu

Ostatnio: 44 minuty temu

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)

Pozostało 580 znaków

2018-08-14 09:10

Rejestracja: 16 lat temu

Ostatnio: 6 godzin temu

0

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

Pozostało 580 znaków

Odpowiedz

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