Przekazanie klasy jako referencja

0

Mam taki problem,oto fragmety kodu:

```cpp
Klasa klasa = new Klasa();

MojaForma1 form1 = new MojaForma1(ref klasa);
form1.ShowDialog();
MojaForma2 form2 = new MojaForma2(ref klasa);
form2.ShowDialog();

...

class MojaFormaX : System.Windows.Forms
{
   ...
   public MojaFormaX(ref Klasa Klasa)
   {
	// This call is required by the Windows Form Designer.
	InitializeComponent();
	MyInit(ref klasa);
	// TODO: Add any initialization after the InitializeComponent call
   }
   ...
   private void radioButtonNew_CheckedChanged(object sender, System.EventArgs e)
  {
		//dostep do przekazanej referencji w tym miejscu
  }
}

Chciałbym uzyskać dostęp do referencji klasy przekazywaniej w konstruktorze klasy w miejscu obsługi zdarzenia. Klasa ta ma pełnić rolę proxy miedzy główną klasą programu a klasami MojaFormaX</b>
0

Po pierwsze, to wszystkie typy złożone przekazywane są przez referencję, więc podając do funkcji parametr

ref Klasa klasa

podajesz jakby wskaźnik na wskaźnik.
Po drugie, to rozwiązaniem Twojego problemu (chociaż nie wiem czy dokładnie o to Ci chodzi) może być zapisanie sobie obiektu

klasa

jako pole klasy (masło maślane :) ) MojaFormaX

.
0

Chodzi mi o to:

Mam klasę główna programu, która po kolei otwiera formularze od 1..n.
Posiadam tez klasę, w której przechowuje jakieś ustawienia.
Przy inicjacji formularza pierwszego z obiektu klasy głównej przekazuj jako parametr obiekt klasy z ustawieniami default'owymi.
Obiekt klasy formularza pierwszego modyfikuje te ustawwienia,kończy działanie.
Wracamy do obiektu klasy głównej.
Obiekt klasy głównej przekazuje zmodyfikowany obiekt klasy ustawień do formularza drugiego... i tak dalej...

0

Wszystko jest OK jeśli zmian dokonam w konstruktorze MojaFormaX lub w metodzie MyInit. Ale ja chcę modyfikować tą klasę podczas obsługi zdarzeń i żeby te zmiany były widoczne w klasie głównej.

0

Referencja z referencji jest jak najbardziej poprawna. Dziwne, że nie działa w takiej postaci jakiej jest. Nie wiem czy to coś da, ale spróbuj zamiast ref użyć słowa out.

0
skrzypol napisał(a)

Referencja z referencji jest jak najbardziej poprawna.

Nie napisałem, że jest niepoprawna. Napisałem, że jest niepotrzebna.

lightmanXXX > Zrób sobie po prostu pole w klasie MojaFormaX przypisz do niego referencję do objektu klasa i operując na nim będziesz operował na tym obiekcie globalnym (bo to będzie jeden i ten sam obekt).

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