Faloude Faloude - 3 months ago 8
C# Question

C# class works without initialization (or call)

I just started learning C# (on Xamarin) and I'm confused about something, coming from a PHP background.

I used a fresh console project template and there is a class in Program.cs

using System;

namespace Test
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}


This writes Hello World! to the console as expected. But the class
MainClass
has never been initialized. Why is it executed?

Edit



Changing my question: Who executed the constructor?

Answer

Main is the entry point of the program. The operating system calls the Main method for you when you run the program. Because Main is a static method, it does not need to create an instance of MainClass to do so.

To be a valid entry point, the Main method must be static and have return type void or int, and either no parameters or a single string[] parameter. (See: https://msdn.microsoft.com/en-us/library/acy3edy3.aspx)

If you have multiple Main methods in your program that are valid entry points, you choose which one to use with compiler settings.