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 // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Ez a két űrlap ugyanazt a programot képviseli. Mindkettő érvényes a C# 10.0-s számmal. Az újabb verzió használatakor csak a metódus törzsét Main kell megí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 Mainolyan 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 a legfelső szintű utasításokról szóló cikkben további információt talál 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ához 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, 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ó á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 metódusban, de a globális névtérben található utasításokat Main tartalmazza.

Több utasítást is hozzáadhat a programhoz, ahogyan a hagyományos stílusban is hozzáadhat további utasításokat a metódushoz Main . Elérheti 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 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. El tudja képzelni, 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 az oktatóanyag felső szintű utasításokra vonatkozó feltárásában tudhat meg többet.

Implicit using irányelvek

Az implicit irányelvek kifejezés azt jelenti, hogy a fordító automatikusan hozzáad egy irányelvkészletetusing a projekt típusa alapján.using 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 implicit módon nem szereplő irányelvekre van szüksége using , hozzáadhatja őket a legfelső szintű utasításokat tartalmazó .cs fájlhoz vagy más .cs fájlokhoz. Az alkalmazások összes .cs fájljában szükséges irányelvekhez using 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 szeretné vezérelni a projekt összes névterét, adja hozzá <ImplicitUsings>disable</ImplicitUsings> a projektfájlhoz az <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 a teljes alkalmazás névterét importálja. Ezeket a globális irányelveket úgy lehet hozzáadni, hogy hozzáadunk egy <Using> elemet a projektfájlhoz, vagy hozzáadjuk az global using irányelvet egy kódfájlhoz.

Egy adott implicit using direktíva eltávolításához hozzáadhat egy <Using> attribútumot tartalmazó Remove elemet is a projektfájlhoz. Ha például az implicit using irányelvek funkció be van kapcsolva <ImplicitUsings>enable</ImplicitUsings>, az alábbi <Using> elem hozzáadásával eltávolítja a névteret az System.Net.Http 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-astól kezdve a console sablon rendelkezik egy --use-program-main lehetőséggel. 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 régi programstílus használata a Visual Studióban

  1. Amikor új projektet hoz létre, a telepí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 do not use top-level statements check box

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

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

Megjegyzés:

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 fájl tartalma eltérhet a Program.cs Visual Studio globális szövegszerkesztő beállításaiban vagy a EditorConfig fájlban definiált 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.