Czy rzucanie obiektu w C # zawsze zwraca odwołanie do początkowego obiektu
Obecnie wykonuję projekt w C #, pracując z formularzami Windows. W trakcie tego robiłem co następuje
void HideButtons(object sender, EventArgs e)
{
Button hider = ((Button)sender);
foreach(Button tohide in hider.Parent.Controls)
tohide.Hide();
hider.Show();
hider.Text = "UnHide";
hider.Click -= new EventHandler(HideButtons);
hider.Click += new EventHandler(ShowButtons);
}
Celem tego kodu jest posiadanie przycisku, który ukrywa wszystkie inne przyciski w pojemniku, z wyjątkiem samego siebie, a następnie zmienia się w przycisk Odkryj, który robi to samo w odwrotnej kolejności.
Teraz wszystko jest dobrze i dobrze, poza tym, że kompilując to, zdaję sobie sprawę, że mam problem. hider jest jego unikalnym obiektem, będącym zwrotem z ((Button) nadawcy). Niekoniecznie jest to odniesienie do nadawcy, a ten kod prawdopodobnie nie zrobi nic.
Ale nisko i dobrze, działa dokładnie tak, jak chciałem i początkowo myślałem, że tak. Co mnie zastanowiło, czy obsada zawsze zwraca odniesienie do oryginalnego obiektu? Jeśli nie, jak mogę zagwarantować, że (przycisk) nadawca = nadawca?
Wiem, że nie dotyczy to podwójnych / intów, jak
public static int Main()
{
int a;
double b;
b = 10.5;
a = (int)b;
a++;
return 0;
}
kończy się na bycie 11, a b na 10,5 Ale może to być strukturą podwójnych / intów. To zachowanie mnie niepokoi i byłoby miło wiedzieć, że zawsze zwróci referencję, abym mógł umieścić mój zmartwiony umysł w spokoju.