[C#]Jak napisać 2 klasy korzystające z tych samych danych.

0

Mam 2 klasy

class A :innaKlasa
{
 // ...
}

class B:innaKlasa
{
 // ...
}

chciałbym mieć teraz możliwość by obydwie klasy widziały te same dane. Obecnie zrobiłem to za pomocą klasy statycznej np.:

static class C
{
  public static int wartosc1;
  public static int wartosc2;
}

a w klasach A i B np.:

class A:innaKlasa
{
 public void akcja()
 {
    C.wartosc1++;
 }
wynik = C.wartosc2;
}

class B:innaKlasa
{
 wynik = wartosc1;
 public void akcja()
 {
    C.wartosc2++;
 }
wynik = C.wartosc1;
}

Prosze się za bardzo nie sugerować kodem bo to tylko tak poglądowo jest. Teraz mam pytanie, czy da się taki wspólny dostęp do zmiennych zrobić inaczej, czy sposób z klasą statyczną jest dobry? Chciałbym też uniknąć tworzenie wewnątrz klasy A obiektu B i na odwrót.

0

Możesz także z klasy C zrobić klasę niestatyczną i dodać do klasy innaKlasa(to osczędzi ci dodawanie pola do klasy A i B oddzielnie, bo przecież A i B z niej dziedziczą) pole typu C np o nazwie data. W ten sposób możesz w A i B ustawić zmienną data na ten sam obiekt, czy to przez właściwość, czy w konstruktorze, jakkolwiek. W ten sposób będziesz mógł w trakcie działania programu podmieniać zestawy danych(jeżeli zakładasz mieć więcej niż jeden). Natomiast jeżeli zestaw danych zawsze będzie jeden i ten sam, to rozwiązanie z klasą statyczną powinno wystarczyć. Chociaż w razie późniejszych zmian trudniej będzie ci zmodyfikować wersję z klasą statyczną.

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