Š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 metodouMain
.
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 await
a 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
má --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
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ě.
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.