Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Estrutura static void

Estou com dúvidas nessa parte do código, pois o professor disse no começo do curso que o explicaria detalhadamente, mas explicou somente a parte "Main".

static void Main(string[] args)

Já estou no segundo curso e ele ainda não explicou sobre. Alguém poderia me iluminar?

2 respostas
solução!

Salve, Daniel!

static e void são duas palavras reservadas da linguagem que definem a visibilidade (no caso do static) e o comportamento (no caso do void).

Quando digo comportamento da função, quero dizer que a palavra reservada define qual vai ser o tipo de retorno da função. Se ela se chamasse static int Main(), significaria que a função Main() é estática (já explico o que isso significa) e que ela retorna, ao final da função, um número inteiro. Se fosse static char Main(), ela retornaria um caractere, e assim vai.

Já o static define a visibilidade da função. Eu não fiz o curso de C#, confesso, mas caso não tenha sido citado, o C# é uma linguagem OO ("orientada a objetos"), e pra entender essa explicação, cê tem que manjar um pouco de POO (programação orientada a objetos) porque ela (a explicação) é comum a várias outras linguagens, como Java, que também têm uma função static void Main() ou algo muito parecido.

Nas classes dessas linguagens OO, existem os métodos, que são comportamentos definidos pelas classes. Objetos (instâncias) dessa classe podem usar esses métodos pra executar alguma lógica ou coisa do tipo. A questão é que pra usar esses métodos, as classes geralmente têm que estar instanciadas, ou seja, um objeto delas deve ter sido criado e, pra que isso aconteça, o programa já deve estar executando.

A questão é: se eu preciso ter o programa executando pra chamar o método de um objeto, e o método só pode ser chamado com o programa executando, como que eu começo a executar um programa, se pra isso eu preciso chamar um método de uma classe? É a versão computacional da pergunta "quem veio primeiro: o ovo ou a galinha"!

Aí que entra a palavra-chave static. Quando usada na definição de um método, ela diz que uma classe não precisa ser instanciada pra que esse método seja chamado. Dessa forma e por padrão, ao compilar o programa, o compilador diz que o método static void Main(string[] args) é o método que deve ser chamado para iniciar a execução do programa. Esse método que inicializa a execução de um programa é chamado ponto de entrada do programa, e no caso do C# pode ser alterado ao chamar um argumento na hora de compilar o programa. No Java, por exemplo, temos o método public static void main(String[] args), que tem a mesma função como ponto de entrada do programa.

Espero que tenha ajudado!

Fonte: Esse post em inglês no stack overflow

Agora sim consegui compreender! Kkkkkk. Obrigado pela ajuda professor, me sanou a pergunta que tenho desde o começo do curso.