Š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 metodouMain
.
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 using
a 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 await
a 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
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ě.
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í.