ucrtbase - Función de punto de entrada C#
no se encuentra el punto de entrada del procedimiento windows 7 (4)
¿Staic void main () es necesario para la función de punto de entrada en C # o podemos usar otras funciones? ¿Por qué main () es estático?
El punto de entrada requerido es en realidad:
static void Main(string[] args); // note capitalization and arguments
La razón por la que Main
debe ser estático es que los objetos no estáticos deben construirse antes de llamar a cualquier método. Dado que Main
es el punto de entrada del programa, ¿quién va a llamar a su constructor?
(Sí, podría hacer que el CLR requiera que la clase con Main
contenga un constructor predeterminado sin parámetros, y que CLR llame a ese constructor durante el inicio global. Pero eso es un trabajo adicional, y en la práctica es más fácil simplemente requerir que Main
sea estático).
Sí para la aplicación ac #, Main()
debe ser el punto de entrada.
La razón es porque eso es lo que los diseñadores de la lengua decidieron ser qué buscar como punto de entrada para su programa. También podrían haber utilizado un enfoque totalmente diferente para encontrar el punto de entrada, por ejemplo, usar metadatos o crear una instancia de un objeto para usted (lo que requeriría un constructor sin parámetros). Otra razón para llamarlo void main()
es que es intuitivo para usuarios que vienen de otros idiomas.
Static Void Main () es el punto de entrada necesario para que cualquier "Ejecutable" ( .EXE ) se cree en C #. Una biblioteca (o .DLL) puede tener otros puntos de entrada.
El método es Estático porque se requiere para acceder al método sin tener una instancia del objeto a tratar. Para invocar el método (punto de inicio) desde fuera de la aplicación, se requiere un método estático.
Sí, tiene que ser Main
. Es estático porque, de lo contrario, el CLR tendría que preocuparse por crear una instancia del tipo, lo que significa que probablemente tendría que tener un constructor sin parámetros, incluso si no quería una instancia del tipo, etc. ¿Por qué querría? ¿Forzarlo a ser un método de instancia?