Nové šablony jazyka C# generují příkazy nejvyšší úrovně
Od verze .NET 6 nové projekty, které používají console šablonu, vygenerují jiný kód než předchozí verze:
// 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í kód, který je třeba pro program napsat. Šablona konzolové aplikace tradičně vygenerovala následující kód:
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyApp // Note: actual namespace depends on the project name.
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Tyto dva formy reprezentují stejný program. Obě jsou platné v C# 10,0. Když použijete novější verzi, stačí napsat jenom tělo Main metody. Nemusíte zahrnovat další prvky programu. Existují dvě možnosti, jak pracovat se stávajícími kurzy:
- Použijte nový styl programu a přidejte nové příkazy na nejvyšší úrovni při přidávání funkcí.
- Převeďte nový styl programu na starší styl s
Programtřídou aMainmetodou.
Pokud chcete použít staré šablony, přečtěte si část použití starého stylu programu .
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.
Příkazy na nejvyšší úrovni znamená, že kompilátor generuje prvky oboru názvů, třídy a metody pro hlavní program. Můžete se podívat na kód nové aplikace a Představte si, že obsahuje příkazy v Main metodě vygenerované předchozími šablonami. Do programu můžete přidat další příkazy, stejně jako můžete do metody přidat další příkazy Main v tradičním stylu. Můžete dokonce přidat funkce. Jsou vytvořeny jako místní funkce vnořené uvnitř vygenerované Main metody.
Jak příkazy nejvyšší úrovně, tak i implicitní using direktivy zjednodušují kód, který tvoří vaši aplikaci. Pokud chcete postupovat podle existujícího kurzu, přidejte všechny nové příkazy do souboru program. cs vygenerovaného šablonou. Představte si, že příkazy, které píšete, jsou mezi otevírací a uzavírací závorkou v Main metodě v pokynech tohoto kurzu.
Pokud byste chtěli použít starší formát, můžete zkopírovat kód z druhého příkladu v tomto článku a pokračovat v tomto kurzu jako předtím.
Další informace o příkazech nejvyšší úrovně najdete v kurzu průzkumu na nejvyšší úrovni příkazů.
Implicitní using direktivy
Implicitní using direktivy znamenají, že kompilátor automaticky přidá sadu using směrnic založenou na typu projektu. V případě konzolových aplikací jsou do aplikace implicitně zahrnuté 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í společné.
Zakázat implicitní using příkazy
Chcete-li toto chování odebrat a ručně řídit všechny obory názvů v projektu, přidejte <ImplicitUsings>disable</ImplicitUsings> do souboru projektu.
Globální using direktivy
Globální using direktiva importuje obor názvů pro celou aplikaci místo jediného souboru. Tyto globální direktivy lze přidat buď přidáním <Using> položky do souboru projektu, nebo přidáním global using direktivy do souboru kódu.
Můžete také přidat <Using> položku do souboru projektu pro odebrání konkrétní implicitní using direktivy. Například pokud je funkce implicitních použití zapnutá pomocí <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ě naimportovány:
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
Použití starého stylu programu
I když Šablona konzolové aplikace .NET 6 vytvoří nový styl programů na nejvyšší úrovni s použitím rozhraní .NET 5. Vytvořením projektu .NET 5 obdržíte starý styl programu. Pak můžete soubor projektu upravit na cílovou platformu .NET 6.
Důležité
Vytvoření projektu, který cílí na rozhraní .NET 5, vyžaduje šablony .NET 5. Šablony .NET 5 je možné nainstalovat ručně pomocí dotnet new --install příkazu nebo instalací sady .NET 5 SDK.
Vytvoření nového projektu
dotnet new console --framework net5.0Otevřete soubor projektu v textovém editoru a změňte
<TargetFramework>net5.0</TargetFramework>na<TargetFramework>net6.0</TargetFramework>.Tady je rozdíl mezi soubory, které ilustrují změny:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> - <TargetFramework>net5.0</TargetFramework> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup> </Project>Volitelný krok: stále můžete použít některé novější funkce rozhraní .NET 6 a C# přidáním vlastností pro implicitní
usingdirektivy a kontextu s možnou hodnotou null do souboru projektu.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> </PropertyGroup> </Project>
Použití starého stylu programu v Visual Studio
při vytváření nového projektu konzoly v Visual Studio se zobrazí výzva s rozevíracím seznamem, které určuje, kterou cílovou architekturu chcete použít. Změňte tuto hodnotu na 5,0. Po vytvoření projektu upravte soubor projektu pro jeho změnu zpět na 6,0.
Když vytvoříte nový projekt, kroky pro instalaci přejdou na stránku nastavení dalších informací . Na této stránce změňte nastavení rozhraní z .net 6,0 (dlouhodobá podpora) na .NET 5,0 a pak vyberte tlačítko vytvořit .
po vytvoření projektu najděte podokno průzkumník Project . Dvakrát klikněte na soubor projektu a změňte
<TargetFramework>net5.0</TargetFramework>na<TargetFramework>net6.0</TargetFramework>.Tady je rozdíl mezi soubory, které ilustrují změny:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> - <TargetFramework>net5.0</TargetFramework> + <TargetFramework>net6.0</TargetFramework> </PropertyGroup> </Project>případně můžete kliknout pravým tlačítkem myši na projekt v podokně průzkumník Project a vybrat možnost vlastnosti. Otevře se stránka nastavení, kde můžete změnit cílovou architekturu.
Volitelný krok: stále můžete použít některé novější funkce rozhraní .NET 6 a C# přidáním vlastností pro implicitní
usingdirektivy a kontextu s možnou hodnotou null do souboru projektu.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> </PropertyGroup> </Project>
Váš názor na šablonu
Šablona nejvyšší úrovně je nová funkce v rozhraní .NET 6. přidejte nebo nahlaste GitHub problému #26313 pro hlasovou podporu pro tuto funkci.