Oi Tainá.
Na verdade, o fato de você criar o objeto na classe, já ficaria visível a todos os métodos. Você não precisa instanciar na classe, entende? Você só instancia em um método, caso você vá utilizar como um novo objeto. Caso não vá utilizar em determinado método, não precisa instanciar esse objeto.
Vamos ver dois casos baseados no seu exemplo inicial:
// Exemplo 1
Conta conta;
private void Form1_Load(object sender, EventArgs e)
{
this.conta = new Conta();
this.conta.Titular = "Tainá";
}
// Exemplo 2
Conta conta;
private void Form1_Load(object sender, EventArgs e)
{
Conta minhaConta = new Conta();
minhaConta.Titular = "Tainá";
}
Nos dois exemplos acima eu crio uma conta e coloco "Tainá" como nome do titular. Note, porém, que no primeiro caso, eu uso o objeto conta
que é uma variável de instância, apenas sendo necessário instanciar ele e atribuir o titular. Ou seja, agora se eu tiver mais métodos nessa classe (assim como acabamos de utilizar o método Form1_Load()
), poderei usar esse objeto conta
que tem o titular "Tainá", é o mesmo objeto.
Já no segundo exemplo, nós criamos e instanciamos um objeto do tipo Conta
dentro do método Form1_Load()
, porém ele é uma variável de escopo, só existe dentro desse método e acaba morrendo ali, pois não utilizamos para mais nada. Ou seja, outros métodos não conseguem acessar esse objeto. No fim, ele vira lixo de memória e acaba sendo coletado pelo Garbage Collector.