Всегда ли приведение объекта в C # возвращает ссылку на исходный объект
В настоящее время я делаю проект на C #, работающий с формами Windows. В ходе этого я сделал следующее
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);
}
Назначение этого кода состоит в том, чтобы иметь кнопку, которая скрывает все другие кнопки в контейнере, в котором он находится, кроме себя, а затем превращается в кнопку «Показать», которая делает то же самое в обратном порядке.
Теперь все это хорошо, за исключением того, что когда я это компилирую, я понимаю, что столкнулся с проблемой. hider - это его уникальный объект, являющийся возвратом от ((кнопки) отправителя). Это не обязательно ссылка на отправителя, и этот код, вероятно, ничего не сделает.
Но низко и вот, это работает точно так, как я хотел, и первоначально думал, что это будет. Что заставило меня задуматься: всегда ли актеры возвращают ссылку на исходный объект? Если нет, как я могу гарантировать, что (кнопка) отправитель = отправитель?
Я знаю, что дело не в двойных / целых, так как
public static int Main()
{
int a;
double b;
b = 10.5;
a = (int)b;
a++;
return 0;
}
в конечном итоге получается 11, а b 10,5. Но это может быть связано с тем, что структуры типа double / ints являются. Это поведение меня беспокоит, и было бы приятно узнать, что оно всегда будет возвращать ссылку, чтобы я мог успокоить свой беспокойный ум.