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 // Note: actual namespace depends on the project name.
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Deze twee formulieren vertegenwoordigen hetzelfde programma. Beide zijn geldig met C# 10.0. Wanneer u de nieuwere versie gebruikt, hoeft u alleen de hoofdtekst van de Main
methode 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 implementatiedetails 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 in het artikel over instructies op het hoogste niveau in de sectie Basisprincipes van de C#-handleiding.
U hebt twee opties om te werken met zelfstudies die niet zijn bijgewerkt voor het gebruik van .NET 6+ sjablonen:
- 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 verderop in dit artikel gebruiken 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
richtlijnen en impliciete using
instructies.
De term instructies op het hoogste niveau betekent dat de compiler de klasse- en methode-elementen voor uw hoofdprogramma genereert. De door de compiler gegenereerde klasse- en invoerpuntmethode worden gedeclareerd in de globale naamruimte. U kunt de code voor de nieuwe toepassing bekijken en zich voorstellen 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 toegang krijgen ( args
opdrachtregelargumenten), gebruiken await
en de afsluitcode instellen. 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 waaruit uw toepassing bestaat. Als u een bestaande zelfstudie wilt volgen, voegt u nieuwe instructies toe aan het bestand Program.cs dat door de sjabloon is gegenereerd. U kunt zich voorstellen dat de instructies die u schrijft zich tussen de open en gesloten accolades in de Main
methode bevinden in de instructies van de zelfstudie.
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 reeks richtlijnen toevoegt op basis van using
het projecttype. 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 instructies nodig hebt using
die niet impliciet zijn opgenomen, kunt u ze toevoegen aan het CS-bestand met instructies op het hoogste niveau of aan andere .cs-bestanden. Gebruik using
globale using
richtlijnen voor instructies die u nodig hebt in alle CS-bestanden in een toepassing.
Impliciete using
instructies uitschakelen
Als u dit gedrag wilt verwijderen en alle naamruimten in uw project handmatig wilt beheren, voegt u dit toe <ImplicitUsings>disable</ImplicitUsings>
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>
Globale 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
instructie te verwijderen. Als de functie voor impliciete using
instructies bijvoorbeeld is ingeschakeld, <ImplicitUsings>enable</ImplicitUsings>
wordt met het volgende <Using>
item de System.Net.Http
naamruimte verwijderd van de naamruimte die impliciet wordt geïmporteerd:
<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
Het 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 pagina Aanvullende informatie-instelling . Schakel op deze pagina het selectievakje Geen instructies op het hoogste niveau gebruiken in.
Nadat uw project is gemaakt, is de
Program.cs
inhoud als volgt: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#, Geavanceerd voor meer informatie.