Sdílet prostřednictvím


Šablona konzolové aplikace jazyka C# generuje příkazy nejvyšší úrovně.

Počínaje rozhraním .NET 6 vygeneruje šablona projektu pro nové konzolové aplikace jazyka C# následující kód v souboru Program.cs:

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

Nový výstup používá nedávné funkce jazyka C#, které zjednodušují psaní kódu pro program. V případě .NET 5 a starších verzí vygeneruje šablona konzolové aplikace následující kód:

using System;

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

V předchozím kódu závisí konkrétní obor názvů na názvu projektu.

Tyto dvě formy představují stejný program. Oba jsou platné v jazyce C#. Pokud používáte novější verzi, stačí napsat pouze text metody Main. Kompilátor vygeneruje třídu Program metodou vstupního bodu a umístí do této metody všechny příkazy nejvyšší úrovně. Název vygenerované metody není Main, jedná se o podrobnosti implementace, na které váš kód nemůže přímo odkazovat. Nemusíte zahrnout ostatní prvky programu, kompilátor je za vás vygeneruje. Můžete získat další informace o kódu, který kompilátor generuje, když použijete příkazy nejvyšší úrovně v článku o příkazy nejvyšší úrovně v části Základy v průvodci jazykem C#.

Máte dvě možnosti, jak pracovat s kurzy, které se neaktualizují, aby používaly šablony .NET 6 nebo novější:

  • Při přidávání funkcí použijte nový styl programu a přidejte nové příkazy nejvyšší úrovně.
  • Převeďte nový styl programu na starší styl s třídou Program a metodou Main.

Pokud chcete použít staré šablony, přečtěte si téma Použití starého stylu programu dále v tomto článku.

Použití nového stylu programu

Funkce, které usnadňují nový program, jsou příkazy nejvyšší úrovně, globální direktivy usinga implicitní using direktivy.

Termín příkazy nejvyšší úrovně znamená, že kompilátor generuje elementy třídy a metody pro váš hlavní program. Vygenerovaná třída kompilátorem a metoda vstupního bodu jsou deklarovány v globálním oboru názvů. Můžete se podívat na kód nové aplikace a představit si, že obsahuje příkazy uvnitř metody Main generované dřívějšími šablonami, ale v globálním oboru názvů.

Do programu můžete přidat více příkazů, stejně jako můžete přidat další příkazy do vaší metody Main v tradičním stylu. Můžete args (argumenty příkazového řádku), použít awaita nastavit ukončovací kód. Můžete dokonce přidávat funkce. Vytvářejí se jako místní funkce vnořené do vygenerované vstupní bodové metody. Místní funkce nemohou obsahovat žádné modifikátory přístupu (například public nebo protected).

Příkazy nejvyšší úrovně i implicitní direktivy using zjednodušují kód, který tvoří vaši aplikaci. Pokud chcete postupovat podle existujícího kurzu, přidejte do souboru Program.cs vygenerovaného šablonou všechny nové příkazy. Můžete si představit, že příkazy, které napíšete, jsou mezi otevřenými a uzavíracími složenými závorkami v metodě Main v pokynech kurzu.

Pokud chcete použít starší formát, můžete kód zkopírovat z druhého příkladu v tomto článku a pokračovat v kurzu jako předtím.

Další informace o příkazech nejvyšší úrovně najdete v průvodci zaměřeném na prohlášení nejvyšší úrovně .

Implicitní direktivy using

Termín implicitní direktivy using znamená, že kompilátor automaticky přidá sadu direktiv using na základě typu projektu. Pro konzolové aplikace jsou do aplikace implicitně zahrnuty následující direktivy:

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

Mezi další typy aplikací patří různé obory názvů, které jsou pro tyto typy aplikací běžné.

Pokud potřebujete using direktivy, které nejsou implicitně zahrnuty, můžete je přidat do .cs souboru, který obsahuje příkazy nejvyšší úrovně nebo do jiných .cs souborů. Pro direktivy using, které potřebujete ve všech .cs souborech v aplikaci, použijte globální direktivy using.

Zákaz implicitních direktiv using

Pokud chcete toto chování odebrat a ručně řídit všechny obory názvů v projektu, přidejte do souboru projektu <ImplicitUsings>disable</ImplicitUsings> v elementu <PropertyGroup>, jak je znázorněno v následujícím příkladu:

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

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

</Project>

Globální direktivy using

globální direktiva using importuje obor názvů pro celou aplikaci místo jednoho souboru. Tyto globální direktivy lze přidat buď přidáním položky <Using> do souboru projektu, nebo přidáním direktivy global using do souboru kódu.

Můžete také přidat položku <Using> s atributem Remove do souboru projektu, abyste odebrali konkrétní implicitní direktivu using. Pokud je například funkce implicitních direktiv using zapnutá pomocí <ImplicitUsings>enable</ImplicitUsings>, přidání následující položky <Using> odebere System.Net.Http obor názvů z těch, které jsou implicitně importovány:

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

Použití starého stylu programu

Počínaje sadou .NET SDK 6.0.300 má šablona console možnost --use-program-main. Slouží k vytvoření projektu konzoly, který nepoužívá příkazy nejvyšší úrovně a má Main metodu.

dotnet new console --use-program-main

Vygenerovaný Program.cs je následující:

namespace MyProject;

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

Použití starého stylu programu v sadě Visual Studio

  1. Když vytvoříte nový projekt, kroky nastavení vás přesměrují na stránku nastavení Další informace. Na této stránce zaškrtněte políčko Nepoužívejte příkazy nejvyšší úrovně.

    Visual Studio nepoužívají zaškrtávací políčko pro příkazy nejvyšší úrovně

  2. Po vytvoření projektu bude obsah Program.cs následující:

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

Poznámka

Visual Studio si zapamatuje nastavení možností, takže příště při vytvoření projektu konzolové aplikace na základě stejné šablony bude zaškrtnuté políčko "Nepoužívat příkazy nejvyšší úrovně". Obsah souboru Program.cs se může lišit podle stylu kódu definovaného v globálním nastavení textového editoru sady Visual Studio nebo souboru EditorConfig.

Další informace najdete v tématu Vytvoření přenosného, vlastního nastavení editoru pomocí EditorConfig a možností , textového editoru, C#, rozšířených nastavení.