Sjabloon voor C#-console-app genereert instructies op het hoogste niveau
Vanaf .NET 6 genereert de projectsjabloon voor nieuwe C#-console-apps de volgende code in het bestand Program.cs:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
De nieuwe uitvoer maakt gebruik van recente C#-functies die de code vereenvoudigen die u moet schrijven voor een programma. Voor .NET 5 en eerdere versies genereert de console-appsjabloon de volgende code:
using System;
namespace MyApp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
In de voorgaande code is de werkelijke naamruimte afhankelijk van de projectnaam.
Deze twee formulieren vertegenwoordigen hetzelfde programma. Beide zijn geldig in C#. Wanneer u de nieuwere versie gebruikt, hoeft u alleen de hoofdtekst van de methode Main
te schrijven. De compiler genereert een Program
-klasse met een invoerpuntmethode en plaatst al uw instructies op het hoogste niveau in die methode. De naam van de gegenereerde methode is niet Main
; het is een implementatiedetail waarnaar uw code niet rechtstreeks kan verwijzen. U hoeft de andere programma-elementen niet op te nemen. De compiler genereert deze voor u. Meer informatie over de code die de compiler genereert wanneer u instructies op het hoogste niveau gebruikt, vindt u in het artikel over instructies op het hoogste niveau in de sectie basisprincipes van de C#-handleiding.
Je hebt twee opties om te werken met handleidingen die niet zijn bijgewerkt met .NET 6+ templates:
- Gebruik de nieuwe programmastijl en voeg nieuwe instructies op het hoogste niveau toe terwijl u functies toevoegt.
- Converteer de nieuwe programmastijl naar de oudere stijl, met een
Program
-klasse en eenMain
methode.
Zie De oude programmastijl gebruiken verderop in dit artikel als u de oude sjablonen wilt gebruiken.
De nieuwe programmastijl gebruiken
De functies die het nieuwe programma eenvoudiger maken, zijn instructies op het hoogste niveau, globale using
richtlijnenen impliciete using
instructies.
De term topexpressies betekent dat de compiler de klasse- en methode-elementen genereert voor uw hoofdprogramma. De door de compiler gegenereerde klasse- en invoerpuntmethode worden gedeclareerd in de globale naamruimte. U kunt de code voor de nieuwe toepassing bekijken en bedenken dat deze de instructies bevat in de Main
methode die is gegenereerd door eerdere sjablonen, maar in de globale naamruimte.
U kunt meer instructies toevoegen aan het programma, net zoals u meer instructies aan uw Main
methode in de traditionele stijl kunt toevoegen. U kunt args
(opdrachtregelargumenten)openen, await
gebruiken en de afsluitcodeinstellen. U kunt zelfs functies toevoegen. Ze worden gemaakt als lokale functies die zijn genest binnen de gegenereerde invoerpuntmethode. Lokale functies kunnen geen toegangsaanpassingen bevatten (bijvoorbeeld public
of protected
).
Zowel instructies op het hoogste niveau als impliciete using
instructies vereenvoudigen de code die uw toepassing vormt. Als u een bestaande zelfstudie wilt volgen, voegt u nieuwe instructies toe aan het Program.cs-bestand dat door de sjabloon is gegenereerd. U kunt zich voorstellen dat de opdrachten die u schrijft zich tussen de open en gesloten accolades in de Main
-methode bevinden, in de instructies van de handleiding.
Als u liever de oudere indeling gebruikt, kunt u de code uit het tweede voorbeeld in dit artikel kopiëren en doorgaan met de zelfstudie zoals voorheen.
Meer informatie over instructies op het hoogste niveau vindt u in de zelfstudie over instructies op het hoogste niveau.
Impliciete using
-instructies
De term impliciete using
instructies betekent dat de compiler automatisch een set using
instructies op basis van het projecttype toevoegt. Voor consoletoepassingen zijn de volgende instructies impliciet opgenomen in de toepassing:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
Andere toepassingstypen bevatten meer naamruimten die gebruikelijk zijn voor deze toepassingstypen.
Als u using
instructies nodig hebt die niet impliciet zijn opgenomen, kunt u deze toevoegen aan het .cs-bestand met instructies op het hoogste niveau of aan andere .cs bestanden. Voor using
richtlijnen die u nodig hebt in alle .cs bestanden in een toepassing, gebruikt u globale using
richtlijnen.
Impliciete using
-instructies uitschakelen
Als u dit gedrag wilt verwijderen en alle naamruimten in uw project handmatig wilt beheren, voegt u <ImplicitUsings>disable</ImplicitUsings>
toe aan het projectbestand in het <PropertyGroup>
-element, zoals wordt weergegeven in het volgende voorbeeld:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
Wereldwijde using
richtlijnen
Een globale using
richtlijn importeert een naamruimte voor uw hele toepassing in plaats van één bestand. Deze globale instructies kunnen worden toegevoegd door een <Using>
item toe te voegen aan het projectbestand of door de global using
-instructie toe te voegen aan een codebestand.
U kunt ook een <Using>
item met een Remove
kenmerk toevoegen aan uw projectbestand om een specifieke impliciete using
instructiete verwijderen. Als de functie impliciete using
instructies is ingeschakeld met <ImplicitUsings>enable</ImplicitUsings>
, zorgt het toevoegen van het volgende <Using>
item ervoor dat de System.Net.Http
naamruimte uit de lijst van impliciet geïmporteerde naamruimtes wordt verwijderd.
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
De oude programmastijl gebruiken
Vanaf .NET SDK 6.0.300 heeft de console
-sjabloon een --use-program-main
optie. Gebruik dit om een consoleproject te maken dat geen instructies op het hoogste niveau gebruikt en een Main
methode heeft.
dotnet new console --use-program-main
De gegenereerde Program.cs
is als volgt:
namespace MyProject;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
De oude programmastijl gebruiken in Visual Studio
Wanneer u een nieuw project maakt, gaan de installatiestappen naar de Aanvullende informatie installatiepagina. Vink op deze pagina het selectievakje Gebruik geen verklaringen op het hoogste niveau aan.
Nadat uw project is gemaakt, ziet de
Program.cs
inhoud er als volgt uit:namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
Notitie
Visual Studio behoudt de waarde voor de opties wanneer u het project de volgende keer maakt op basis van dezelfde sjabloon. Standaard wordt het selectievakje 'Geen instructies op het hoogste niveau gebruiken' ingeschakeld wanneer het console-app-project de volgende keer wordt gemaakt.
De inhoud van het Program.cs
-bestand kan afwijken van de codestijl die is gedefinieerd in de algemene instellingen van de Visual Studio-teksteditor of het EditorConfig
-bestand.
Zie Draagbare, aangepaste editorinstellingen maken met EditorConfig en Opties, Teksteditor, C#, Geavanceerdevoor meer informatie.