A C#-konzolalkalmazás-sablon legfelső szintű utasításokat hoz létre

A .NET 6-os verziótól kezdve az új C#-konzolalkalmazások projektsablonja a következő kódot hozza létre a Program.cs fájlban:

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

Az .NET 5-ös és korábbi verziói esetén a konzolalkalmazás-sablon a következő kódot hozza létre:

using System;

namespace MyApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Az előző kódban a tényleges névtér a projekt nevétől függ.

Ez a két űrlap ugyanazt a programot képviseli. Mindkettő érvényes C#-ban. Az újabb verzió használatakor csak a Main metódus törzsét kell írnia. A fordító létrehoz egy Program belépésipont-metódussal rendelkező osztályt, és az összes legfelső szintű utasítást ebben a metódusban helyezi el. A létrehozott metódus neve nem Main– ez egy implementációs részlet, amelyet a kód nem tud közvetlenül hivatkozni. Nem kell belefoglalnia a többi programelemet; a fordító létrehozza őket Önnek. A fordító által a legfelső szintű utasítások használatakor létrehozott kódról további információt a C# útmutató alapjai című szakaszban talál.

Ha olyan oktatóanyagokkal dolgozik, amelyek nem frissülnek .NET több mint 6 sablon használatára, használja az alábbi két lehetőség egyikét:

  • Használja az új programstílust, és adjon hozzá új felső szintű utasításokat a funkciók hozzáadásakor.
  • Konvertálja az új programstílust a régebbi stílusra egy Program osztály és egy Main metódus használatával.

Ha a régi sablonokat szeretné használni, a cikk későbbi részében a régi programstílus használata című témakörben olvashat.

Az új programstílus használata

Az új programot egyszerűbbé tevő funkciók a legfelső szintű utasítások, a globális using irányelvek és az implicit using irányelvek.

A legfelső szintű utasítások kifejezés azt jelenti, hogy a fordító létrehozza a fő program osztály- és metóduselemeit. A fordító deklarálja a létrehozott osztály- és belépésipont-metódust a globális névtérben. Tekintse meg az új alkalmazás kódját, és képzelje el, hogy a Main metódus tartalmazza a korábbi sablonok által generált utasításokat a globális névtérben.

Adjon hozzá további utasításokat a programhoz, ahogyan a hagyományos stílusban adja hozzá az utasításokat a metódushoz Main . Access args (parancssori argumentumok), használja await, és állítsa be a kilépési kódot. Függvényeket is hozzáadhat. A fordító helyi függvényként hozza létre őket a létrehozott belépésipont-metódusba ágyazva. A helyi függvények nem tartalmazhatnak hozzáférési módosítókat (például publicprotected).

A legfelső szintű utasítások és az implicit using irányelvek egyaránt leegyszerűsítik az alkalmazást alkotó kódot. Meglévő oktatóanyag követéséhez adjon hozzá minden új utasítást a sablon által létrehozott Program.cs fájlhoz. Képzelje el, hogy az ön által írt utasítások a metódus nyitott és záró zárójelei Main között vannak az oktatóanyag utasításaiban.

Ha a régebbi formátumot szeretné használni, másolja a kódot a jelen cikk második példájából, és folytassa az oktatóanyagot a korábbiakhoz hasonlóan.

A legfelső szintű utasításokról további információt a felső szintű utasítások oktatóanyagában talál.

Implicit using irányelvek

Az implicit using irányelvek kifejezés azt jelenti, hogy a fordító automatikusan hozzáad egy irányelvkészletetusing a projekt típusa alapján. Konzolalkalmazások esetében a következő irányelvek implicit módon szerepelnek az alkalmazásban:

  • using System;
  • using System.IO;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Net.Http;
  • using System.Threading;
  • using System.Threading.Tasks;

Más alkalmazástípusok több olyan névteret is tartalmaznak, amelyek gyakran előfordulnak az adott alkalmazástípusok esetében.

Ha olyan irányelvekre van szüksége using , amelyek nem implicit módon szerepelnek, vegye fel őket a legfelső szintű utasításokat tartalmazó .cs fájlba vagy más .cs fájlokba. Az alkalmazások összes using fájljában szükséges irányelvekhez használjon globális using irányelveket.

Implicit using irányelvek letiltása

Ha el szeretné távolítani ezt a viselkedést, és manuálisan szabályozni szeretné a projekt összes névterét, adja hozzá <ImplicitUsings>disable</ImplicitUsings> az <PropertyGroup> elem projektfájljához az alábbi példában látható módon:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

Globális using irányelvek

Egy globális using irányelv egyetlen fájl helyett a teljes alkalmazás névterét importálja. Adja hozzá ezeket a globális irányelveket úgy, hogy belevesz egy <Using> elemet a projektfájlba, vagy hozzáadja az global using irányelvet egy kódfájlhoz.

Egy adott implicit direktíva usingeltávolításához adjon hozzá egy <Using> attribútumot tartalmazó Remove elemet a projektfájlhoz. Ha például az implicit using irányelv funkció be van kapcsolva <ImplicitUsings>enable</ImplicitUsings>, az alábbi <Using> elem hozzáadásával eltávolítja az adott System.Net.Http névteret az implicit módon importáltak közül.

<ItemGroup>
  <Using Remove="System.Net.Http" />
</ItemGroup>

A régi programstílus használata

A .NET SDK 6.0.300-tól kezdve a console sablon --use-program-main lehetőséggel rendelkezik. Segítségével létrehozhat egy olyan konzolprojektet, amely nem használ legfelső szintű utasításokat, és rendelkezik metódussal Main .

dotnet new console --use-program-main

A generált Program.cs adatok a következők:

namespace MyProject;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

A Visual Studio régi programstílusának használata

  1. Új projekt létrehozásakor a beállítási lépések a További információ beállítás lapjára lépnek. Ezen a lapon jelölje be a Ne használjon felső szintű utasításokat jelölőnégyzetet .

    Visual Studio ne használja a felső szintű utasítások jelölőnégyzetet

  2. A projekt létrehozása után a Program.cs tartalom a következő:

    namespace MyProject;
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
    

Jegyzet

Visual Studio megőrzi a beállítás értékét, amikor legközelebb ugyanazon sablon alapján hoz létre projektet. Ha legutóbb bejelölte a Do not use top-level statements jelölőnégyzetet, amikor konzolalkalmazás-projektet hozott létre, akkor a következő konzolalkalmazás-projekt létrehozásakor is be lesz jelölve ez az opció. A Program.cs fájl tartalma eltérhet a globális Visual Studio szövegszerkesztő beállításaiban vagy a EditorConfig fájlban meghatározott kódstílustól.

További információ: Hordozható, egyéni szerkesztőbeállítások létrehozása a Szerkesztőkonfiguráció és beállítások, Szövegszerkesztő, C#, Speciális beállításokkal.