Por que o principal ponto de entrada do método é estático na maioria dos programas C#?
-
23-09-2019 - |
Pergunta
Por que o principal ponto de entrada do método é estático na maioria dos programas C#?
Solução
Para chamar um método de instância, você precisa de uma instância de um objeto. Isso significa que, para iniciar seu programa, o CLR precisaria criar uma instância de dizer Program
Para chamar o método Main
. Daí o construtor de Program
funcionaria antes Main
que derrota o objetivo de ter um principal principal.
Outras dicas
Eu mudaria a pergunta. Qual é o benefício convincente de implementar o recurso que permite que o principal seja um método de instância? Os recursos são caros; Se não houver benefício atraente, eles não serão implementados.
Você tem uma boa razão para que o principal deve ser um método de instância?
Conceitualmente, você tem apenas uma instância de uma estática. E um método estático mapeia bem o idioma de um único ponto de olhar para um programa. Os designers de idiomas poderiam ter criado uma classe de programa especial para usar com um método principal, mas optou por criar uma única função estática como ponto de entrada. Em alguns níveis, é realmente apenas uma opção de design.
Porque, caso contrário, teria que criar um objeto e a execução do construtor poderia causar efeitos colaterais negativos.
Como você poderia criar sua instância de classe antes de principal?
o .NET runtime
chama o Main
método. (NOTA: O principal também pode ser chamado de outros lugares, por exemplo, do código principal () em outro método de excesso de exemplo.) O static
A palavra -chave torna o método acessível sem um instance
do ExampleClass
. Portanto, o método principal é um ponto de entrada e deve ser declarado estático.
Caso contrário, o programa exigiria uma instância, mas qualquer instância exigiria um programa.
Para evitar isso irresolúvel circular dependency
O principal é usado como ponto de entrada
referência: http://en.wikipedia.org/wiki/c_sharp_(programing_language
Métodos estáticos podem ser executados sem criar uma instância. Por convenção, eles têm o main
Método como o método padrão a ser chamado.
Para todos os objetos de uma classe contém método principal e outros métodos e variáveis, existem cópias separadas de cada variável e métodos contidos por todos os objetos, mas uma cópia de classe principal é apenas uma entre eles e para fazer uma cópia entre o número de objetos que temos para tornar o método principal como estático.