Megosztás a következőn keresztül:


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

A .NET 6-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 új kimenet a legújabb C# funkciókat használja, amelyek leegyszerűsítik a programhoz írandó kódot. A .NET 5-ös és korábbi verziói esetében 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 osztályt egy belépési pont metódusával, és az összes legfelső szintű utasítást ebben a metódusban helyezi el. A létrehozott metódus neve nem Main, hanem egy implementációs részlet, amelyet a kód nem tud közvetlenül hivatkozni. A többi programelemet nem kell belefoglalnia, a fordító létrehozza őket. A C#-útmutató alapjai című szakaszban legfelső szintű utasítások című cikkben talál további információt arról a kódról, amelyet a fordító generál, amikor felső szintű utasításokat használ.

A .NET 6+-sablonok használatára nem frissített oktatóanyagokkal két lehetőség közül választhat:

  • 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, tekintse meg a cikk későbbi részében a(z) Régi programstílus használata részt.

Az új programstílus használata

Az új programot egyszerűbbé tevő funkciók legfelső szintű utasítások, globális using irányelvek, és 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ó által létrehozott osztály- és belépésipont-metódus a globális névtérben deklarálva van. Megtekintheti az új alkalmazás kódját, és el tudja képzelni, hogy a korábbi sablonok által létrehozott Main metódusban, de a globális névtérben lévő utasításokat tartalmazza.

A programhoz több utasítást is hozzáadhat, ahogyan a hagyományos stílusban is hozzáadhat további utasításokat a Main metódushoz. Hozzáférhet args (parancssori argumentumok), használhatja await, és beállíthatja a kilépési kódot. Függvényeket is hozzáadhat. Ezek helyi függvényekként jönnek létre, amelyek a létrehozott belépési pont metódusában vannak beágyazva. A helyi függvények nem tartalmazhatnak hozzáférési módosítókat (például public vagy protected).

A legfelső szintű utasítások és implicit using irányelvek egyszerű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. El tudja képzelni, hogy az ön által írt utasítások a Main metódus nyitott és záró zárójelei 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 a legfelső szintű utasításokcímű oktatóanyagban olvashat bővebben.

Implicit using irányelvek

A implicit using irányelvek azt jelenti, hogy a fordító automatikusan hozzáad egy using irányelveket, 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 using direktívákra van szüksége, amelyek nem implicit módon szerepelnek, felveheti őket a legfelső szintű utasításokat vagy más .cs fájlokat tartalmazó .cs fájlba. Az alkalmazás minden egyes .cs fájljában szükséges using irányelvekhez használja a globális using irányelveket.

Implicit using irányelvek letiltása

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

<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 egy névteret importál a teljes alkalmazáshoz. Ezek a globális irányelvek hozzáadhatók egy <Using> elem projektfájlhoz való hozzáadásával, vagy a global using irányelv kódfájlhoz való hozzáadásával.

A projektfájlhoz Remove attribútummal rendelkező <Using> elemet is hozzáadhat egy adott implicit using irányelveltávolításához. Ha például az implicit using irányelvek funkciója be van kapcsolva <ImplicitUsings>enable</ImplicitUsings>-nél, a <Using> elem következő hozzáadásával eltávolítja az importált implicit névterek közül a System.Net.Http névteret.

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

A régi programstílus használata

A .NET SDK 6.0.300-astól kezdve a console sablon --use-program-main lehetőséggel rendelkezik. Olyan konzolprojekt létrehozásához használható, amely nem használ legfelső szintű utasításokat, és Main metódussal rendelkezik.

dotnet new console --use-program-main

A létrehozott Program.cs a következő:

namespace MyProject;

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

A régi programstílus használata a Visual Studióban

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

    Visual Studio nem használja a legfelső szintű utasítások jelölőnégyzetét

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

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

Jegyzet

A Visual Studio megőrzi a beállítások értékét, amikor legközelebb ugyanazon sablon alapján hozza létre a projektet, ezért alapértelmezés szerint a Konzolalkalmazás-projekt következő létrehozásakor a "Ne használjon legfelső szintű utasításokat" jelölőnégyzet be lesz jelölve. A Program.cs fájl tartalma eltérhet a Visual Studio globális 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 az EditorConfig és Beállítások, Szövegszerkesztő, C#, Speciális.