Wpis z mikrobloga

#programowanie #csharp

Mam problem. Mam obiekt1 i obiekt2. Inicjalizuje sobie obiekt1 i w konstruktorze przesyłam obiekt2 (czyli obiekt1 zawiera w sobie referencje do obiekt2, oczywiście obiekt2 wcześniej utworzyłem). Problem jest taki, że bezpośrednio po inicjalizacji referencja do tego obiekt2 znajdująca się w obiekt1 jest null.

Debuguje program i na końcu konstruktora obiekt1 wszystko jest jak należy, czyli został prawidłowo przypisany obiekt2 w tym obiekt1, ale zaraz po wyjściu z tego konstrukotra czyli po inicjalizacji obiekt2 jest null w tym obiekt1.

Podejrzewam, że jakiś głupi błąd ale w tym momencie nie wiem o co może chodzic?
  • 15
@archlinuxuser @KotoFan:

// utworzenie pewnego obiektu agil (kopiuje jak jest)

Agilent34410a agil = new Agilent34410a(((Identification)comboBox3.SelectedItem).Domain, communicationNumber, comboBox4.Text[0], ((Identification)comboBox3.SelectedItem).SerialNumber, "TCP", measureTypes.First(x => x.Name == comboBox1.Text).MeasurementTypes);

//dodaje do listy kontrolerów kontroler który zawiera w sobie obiekt agil

controllers.Add(new SCPIController(agil, tabControl));

i jak dam breakpointa na koncu konstruktora SCPIController wszytko jest git czyli agil jest tam przypisany

jak dam breakpointa zaraz po kodzie: controllers.Add(new SCPIController(agil, tabControl)); to już w tej liście kontrolerów gdzie jest
@popkast:

private ISCPIMeasure Measure;

public SCPIController(SCPIMeasure measure, TabControl tabControl)

: base(measure as Measure)

{

this.Measure = measure as ISCPIMeasure;

this.view = new SCPIView(this);

view.tabControl = null;

measure.RegisterObserver(view);

tabControl.TabPages.Add(view.tabPage1);

view.tabPage1.Text = measure.ToString();

view.tabPage1.ToolTipText = measure.Domain + Environment.NewLine + measure.Id;

base.view = this.view as MeasureView;

ButtonEnabledConfig();

SetResolution();

view.comboBox_measure.Items.AddRange(measure.GetTypes.ToArray());

view.comboBox_measure.SelectedIndex = 0;

SearchRanges();

}
@popkast: ta zmienna jednak jest

private ISCPIMeasure measure;

w klasie bazowej tez mam zmienną measure

czyli w konstruktorze jest

this.measure = measure as ISCPIMeasure;

Jak dam breakpointa na koncu konstrukotra to jest przypisane jak nalezy.

Natomiast jak dam dosłownie raz stepInto w debugerze i sobie przeglądne liste tych kontrolerów i ten konkretny kontroler to juz jest null w nim. Z czego to moze wynikac bo już powoli wariuje?
@popkast: tak tylko jako ciekawostkę napisze, że to jednak nie było to. Po prostu rzutowałem obiekt na interfejs a okazało się ze ten obiekt tego interfejsu nie implementuje (gdzieś mi umknęło). A że rzutowałem operatorem as to błędu nie było tylko po prostu null dawało.

:)