MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Clasa Program și metoda Main - Programele de nivel superior

Punctul de intrare într-un program C# este metoda Main. De la această metodă începe execuția unui program în C#. Un program C# trebuie să aibă obligatoriu metoda Main. Cu toate acestea, poate apărea întrebarea: ce metodă Main, dacă, de exemplu, Visual Studio 2022 creează implicit un proiect de aplicație console cu următorul cod:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Și acest program nu conține nicio metodă Main, dar se execută normal și afișează pe consolă mesajul "Hello, World!", așa cum era planificat. Aceasta este așa-numita programă de nivel superior (top-level program). Iar apelul Console.WriteLine("Hello, World!") reprezintă o instrucțiune de nivel superior (top-level statement).

Totuși, în realitate acest cod este plasat implicit de către compilator în metoda Main, care la rândul ei este plasată în clasa Program. De fapt, numele clasei poate fi orice (de obicei, este clasa Program, de aceea fișierul de cod generat implicit se numește Program.cs).

Dar metoda Main este o parte obligatorie a aplicației console. Astfel, codul prezentat mai sus este echivalent cu următorul program:

class Program
{
   static void Main(string[] args)
   {
       // See https://aka.ms/new-console-template for more information
       Console.WriteLine("Hello, World!");
   }
}

Definirea metodei Main începe obligatoriu cu modificatorul static, care indică faptul că metoda Main este statică. Mai târziu vom detalia ce înseamnă acest lucru.

Tipul de returnare al metodei Main este obligatoriu void. În plus, ca parametru acceptă un șir de string-uri - string[] args - în programul real acestea sunt parametrii prin care, la lansarea programului din consolă, îi putem transmite anumite valori. În interiorul metodei se află acțiunile pe care le execută programul.

Până la Visual Studio 2022, toate versiunile anterioare creau implicit aproximativ acest cod. Dar începând cu Visual Studio 2022, nu mai este necesar să definim manual clasa Program și metoda Main - compilatorul le generează automat.

Dacă definim variabile, constante, metode și le apelăm, acestea sunt plasate în metoda Main. De exemplu, următorul program de nivel superior:

string hello = "Hello FDC.COM";

Print(hello);

void Print(string message)
{
   Console.WriteLine(message);
}

este echivalent cu următorul program:

class Program
{
   static void Main(string[] args)
   {
       string hello = "Hello FDC.COM";

       Print(hello);

       void Print(string message)
       {
           Console.WriteLine(message);
       }
   }
}

Dacă sunt definite noi tipuri, de exemplu, clase, acestea sunt plasate în afara clasei Program. De exemplu, codul:

Person tom = new();
tom.SayHello();

class Person
{
   public void SayHello() => Console.WriteLine("Hello");
}


este echivalent cu următorul:


class Program
{
   static void Main(string[] args)
   {
       Person tom = new();
       tom.SayHello();
   }
}

class Person
{
   public void SayHello() => Console.WriteLine("Hello");
}

Cu toate acestea, trebuie avut în vedere că definițiile tipurilor (în special clasele) trebuie să fie la finalul fișierului, după instrucțiunile de nivel superior. Adică:

// instrucțiuni de nivel superior (top-level statements)
Person tom = new();
tom.SayHello();

// definiția clasei vine după instrucțiunile de nivel superior
class Person
{
   public void SayHello() => Console.WriteLine("Hello");
}

Astfel, putem continua să scriem programe de nivel superior fără definirea explicită a metodei Main. Sau putem defini explicit metoda Main și clasa Program:

Și acest cod se va executa în mod similar, ca și cum nu am folosi clasa Program și metoda Main.

← Lecția anterioară Lecția următoare →