Olá a todos, tudo bem ?
Busquei bastante mas não encontrei uma resposta clara para essa questão…
Qual o local correto para se declarar um variável no C#, dentro de um método ou fora dele, na classe?
Sei que, quando declaro uma variável e depois lhe dou uma valor fora de um método dá erro. E se eu criar variáveis dentro de métodos, por exemplo, não posso acessá-las através de qualquer método e dar-lhes valor. Então, posso concluir que o local correto para se criar variáveis é fora de métodos e o lugar para atribuir valores é dentro de métodos.
Depende do Escopo
Se você definir uma variável dentro da Classe e fora do método Ela serà um Atributo com Escopo Global é assim podera ser usada dentro de todo código da classe até mesmo dentro do metodo. E Utilizando a palavra chave This você faz uma referência ao Objeto que chamou esse método . Jà no caso de declarar uma vàriavel dentro do método o escopo vai ser local e ela só vai poder ser acessada dentro do método isso também serve para parâmetros do método .
Exemplo:
Class Pessoa {
Public string Nome; // Atributo da classe de Escopo Global .
Public void SetNome( string nome) {
this.Nome = nome ;
}
}
As variáveis dentro do parantese São chamadas de parâmetro ou argumentos do método e seu escopo é local assim só o método vai ter acesso.
A palavra this faz referência ao nome do objeto que chama esse método .
Dessa forma eu estou Atribuindo o valor do argumento nome , no Atributo Nome da classe que é uma Variável de escopo Global
Lembrando que também existem os Modificadores de acesso para proibir ou não o acesso à classe e seud componentes
Public
Private
Internal
Protected .
Se você define uma variável sem uma visibilidade o Compilador do C# entende que ela é Private e só a classe e seus membros ter am acesso a els isso também serve pra métodos e propriedades e pra própria classe
Caso você não entender a minha explicação recomendo assistir esta aula sobre escopo de vàriavel e entender a diferença de Local é Global