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

Tyto dvě formy představují stejný program. Obě verze jsou platné v jazyce C# 10.0. Pokud používáte novější verzi, stačí napsat pouze tělo Main metody. Kompilátor vygeneruje třídu s metodou Program 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 odkazovat přímo. Nemusíte zahrnout ostatní prvky programu, kompilátor je za vás vygeneruje. Další informace o kódu, který kompilátor generuje, když použijete příkazy nejvyšší úrovně v článku o příkazech nejvyšší úrovně v části Základy jazyka C#.

Máte dvě možnosti, jak pracovat s kurzy, které nebyly aktualizovány tak, 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 Program třídou a metodou Main .

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

Použití nového stylu programu

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

Výrazy nejvyšší úrovně znamenají, že kompilátor generuje elementy třídy a metody pro hlavní program. Metoda třídy a vstupního bodu vygenerovaného kompilátorem 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ř Main metody generované dřívějšími šablonami, ale v globálním oboru názvů.

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

Příkazy nejvyšší úrovně i implicitní using direktivy 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é píšete, jsou mezi otevřeným a pravou složenou závorkami v Main metodě 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 kurzu zkoumání příkazů nejvyšší úrovně.

Implicitní using direktivy

Výraz implicitní using direktivy znamená, že kompilátor automaticky přidá sadu direktiv založených using na 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ří více oborů 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 souboru .cs , který obsahuje příkazy nejvyšší úrovně nebo do jiných souborů .cs . Pro using direktivy, které potřebujete ve všech souborech .cs v aplikaci, použijte globální using direktivy.

Zákaz implicitních using direktiv

Pokud chcete toto chování odebrat a ručně řídit všechny obory názvů v projektu, přidejte <ImplicitUsings>disable</ImplicitUsings> do souboru projektu 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í using direktivy

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

Můžete také přidat <Using> položku s atributem Remove do souboru projektu, abyste odebrali konkrétní implicitní using direktivu. Pokud je například zapnutá funkce implicitních using direktiv, <ImplicitUsings>enable</ImplicitUsings>přidání následující <Using> položky 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 console--use-program-main šablona možnost. Slouží k vytvoření projektu konzoly, který nepoužívá příkazy nejvyšší úrovně a má metodu Main .

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í přejdou na stránku Další informace o nastavení. Na této stránce zaškrtněte políčko Nepoužívat příkazy nejvyšší úrovně.

    Visual Studio do not use top-level statements check box

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

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

Poznámka:

Visual Studio zachová hodnotu pro možnosti při příštím vytvoření projektu na základě stejné šablony, takže při příštím vytvoření projektu konzolové aplikace bude zaškrtnuté políčko "Nepoužívat příkazy nejvyšší úrovně". Obsah Program.cs souboru 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 naleznete v tématu Vytváření přenosných, vlastních nastavení editoru pomocí EditorConfig and Options, Text Editor, C#, Advanced.