To jest zdecydowanie trochę noob pytanie, ale moje wyszukiwania tak daleko nie wyjaśniły problemu dla mnie.C#: (Statyczne) Zmienne poziomu klasy
Chcesz konkretnej aplikacji konsolowej do przechowywania kilku zmiennych na poziomie klasy. W jednym przypadku chcę zapisać kopię mojego obiektu do rejestrowania, którego użyję w różnych miejscach w klasie. W innym przypadku chcę zapisać prosty typ, wartość int, która będzie używana tylko wewnętrznie (nie musi być własnością).
Wygląda na to, że jeśli nie określiłem tych zmiennych jako statyczne, nie mogę ich użyć w menu głównym() i poza nim.
Moje rozumienie obiektów statycznych polega na tym, że ich wartości są współużytkowane we wszystkich instancjach obiektu. W normalnych warunkach, spodziewam się, że będą one tylko jednym przypadkiem mojej aplikacji, więc ten problem nie stanowi problemu - ale podkreślił brak zrozumienia z mojej strony czegoś, co jest dość podstawowe.
W przypadku, z mojego obiektu rejestrowania, mogłem zobaczyć przypadek dla uczynienia go statycznym - udostępnianie dziennika w wielu wystąpieniach może być zaletą. Jednak może nie być tak w przypadku ... W przypadku mojej int, z pewnością nie chciałbym, aby to było współdzielone przez instancje.
Więc ...
- jestem nieporozumienie teorię tego?
- Czy jest inny sposób, w jaki powinienem deklarować i używać zmiennych na poziomie klasy?
- Czy powinienem unikać ich używania? Mógłbym po prostu przekazać wartości jako parametry od funkcji do funkcji, choć wydaje się niewiele do pracy bez widocznego zysku.
EDYCJA: OK, wiadomość jest jasna - moje rozumienie statyki było w dużej mierze poprawne, ale problem był związany ze strukturą i podejściem. Dzięki za twoje odpowiedzi.
Niezupełnie i odpowiedź, ale to sprawdzić: http://en.wikipedia.org/wiki/Singleton_pattern – Brad
głównego Metoda() jest statyczna, dlatego można uzyskać dostęp tylko do statycznych metod i zmiennych z niej. –
Zmienne statyczne są udostępniane we wszystkich instancjach obiektu * w ramach AppDomain *. Każda instancja aplikacji działa w innym AppDomain. – Douglas