A conversão de um objeto em C # sempre retorna uma referência para o objeto inicial
Atualmente estou fazendo um projeto em c # trabalhando com formulários do windows. Durante o curso, fiz o seguinte
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);
}
A finalidade deste código é ter um botão que oculta todos os outros botões no contêiner, exceto ele próprio, e depois transformar em um botão Unhide, que faz a mesma coisa ao contrário.
Agora, tudo bem, exceto que, enquanto eu compilo isso, percebo para mim mesma que acertei um problema. hider é seu objeto único, sendo o retorno de ((Button) remetente). Não é necessariamente a referência ao remetente, e esse código provavelmente não fará nada.
Mas baixo e eis que funciona exatamente como eu queria e inicialmente pensei que seria. O que me fez pensar, o elenco sempre retorna uma referência ao objeto original? Se não, como posso garantir que remetente (botão) = remetente?
Eu sei que não é o caso de duplas / ints, como
public static int Main()
{
int a;
double b;
b = 10.5;
a = (int)b;
a++;
return 0;
}
termina com um ser 11, e sendo b 10.5 Mas isso pode ser devido a duplas / ints sendo estruturas. Esse comportamento me preocupa, e seria bom saber que ele sempre retornará uma referência para que eu possa colocar minha mente preocupada em repouso.