Die C#-Konsolen-App-Vorlage generiert Anweisungen der obersten Ebene.
Ab .NET 6 generiert die Projektvorlage für neue C#-Konsolen-Apps den folgenden Code in der Program.cs Datei:
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Die neue Ausgabe verwendet aktuelle C#-Features, die den Code vereinfachen, den Sie für ein Programm schreiben müssen. Für .NET 5 und frühere Versionen generiert die Konsolen-App-Vorlage den folgenden Code:
using System;
namespace MyApp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Im vorherigen Code hängt der tatsächliche Namespace vom Projektnamen ab.
Diese beiden Formen stellen dasselbe Programm dar. Beide sind in C# gültig. Wenn Sie die neuere Version verwenden, müssen Sie nur den Text der Main
-Methode schreiben. Der Compiler generiert eine Program
-Klasse mit einer Einstiegspunktmethode und platziert alle Anweisungen der obersten Ebene in dieser Methode. Der Name der generierten Methode ist nicht Main
, es handelt sich um ein Implementierungsdetails, auf das Ihr Code nicht direkt verweisen kann. Sie müssen die anderen Programmelemente nicht einschließen, der Compiler generiert sie für Sie. Weitere Informationen zu dem Code, den der Compiler generiert, wenn Sie Anweisungen der obersten Ebene verwenden, finden Sie im Artikel über Anweisungen der obersten Ebene im Abschnitt "Grundlagen" des C#-Handbuchs.
Sie haben zwei Möglichkeiten, mit Anleitungen zu arbeiten, die nicht auf .NET 6+-Vorlagen aktualisiert sind:
- Verwenden Sie den neuen Programmstil, und fügen Sie beim Hinzufügen von Features neue Anweisungen der obersten Ebene hinzu.
- Konvertieren Sie den neuen Programmstil in den älteren Stil mit einer
Program
-Klasse und einerMain
-Methode.
Wenn Sie die alten Vorlagen verwenden möchten, lesen Sie weiter unten in diesem Artikel Verwenden des alten Programmstils.
Verwenden Sie den neuen Programmstil
Die Features, die das neue Programm so einfach machen, sind Anweisungen der obersten Ebene, globale using
-Anweisungen und implizite using
-Anweisungen.
Der Begriff Anweisungen der obersten Ebene bedeutet, dass der Compiler die Klassen- und Methodenelemente für Ihr Hauptprogramm generiert. Die vom Compiler generierte Klasse und Einstiegspunktmethode werden im globalen Namespace deklariert. Sie können sich den Code für die neue Anwendung ansehen und sich vorstellen, dass er die Anweisungen in der Main
-Methode enthält, die von früheren Vorlagen generiert wurde, aber im globalen Namespace.
Sie können dem Programm weitere Anweisungen hinzufügen, genauso wie Sie Ihrer Main
-Methode weitere Anweisungen im herkömmlichen Stil hinzufügen können. Sie können auf args
(Befehlszeilenargumente)zugreifen, await
verwenden und den Ausgangscodefestlegen. Sie können sogar Funktionen hinzufügen. Sie werden als lokale Funktionen erstellt, die in der generierten Einstiegspunktmethode geschachtelt sind. Lokale Funktionen können keine Zugriffsmodifizierer enthalten (z. B. public
oder protected
).
Sowohl Anweisungen auf oberster Ebene als auch implizite using
-Anweisungen vereinfachen den Code, auf dem Ihre Anwendung beruht. Fügen Sie der von der Vorlage generierten Program.cs-Datei neue Anweisungen hinzu, um einem vorhandenen Tutorial zu folgen. Stellen Sie sich vor, dass die von Ihnen geschriebenen Anweisungen zwischen den geöffneten und schließenden Klammern in der Main
-Methode in den Anweisungen des Tutorials liegen.
Wenn Sie lieber das ältere Format verwenden möchten, können Sie den Code aus dem zweiten Beispiel in diesem Artikel kopieren und das Lernprogramm wie zuvor fortsetzen.
Weitere Informationen zu Anweisungen der obersten Ebene finden Sie im Tutorial zu Anweisungen auf oberster Ebene.
Implizite using
-Anweisungen
De Begriff impliziteusing
-Anweisungen bedeutet, dass der Compiler automatisch eine Gruppe von using
-Anweisungen basierend auf dem Projekttyp hinzufügt. Bei Konsolenanwendungen sind die folgenden Direktiven implizit in der Anwendung enthalten:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
Andere Anwendungstypen enthalten weitere Namespaces, die für diese Anwendungstypen üblich sind.
Wenn Sie using
-Direktiven benötigen, die nicht implizit enthalten sind, können Sie sie der .cs Datei hinzufügen, die Anweisungen auf oberster Ebene enthält, oder anderen .cs Dateien. Verwenden Sie für using
-Anweisungen, die Sie in allen CS-Dateien in einer Anwendung benötigen, globale using
-Anweisungen.
Deaktivieren impliziter using
-Anweisungen
Wenn Sie dieses Verhalten entfernen und alle Namespaces in Ihrem Projekt manuell steuern möchten, fügen Sie Ihrer Projektdatei im <PropertyGroup>
-Element <ImplicitUsings>disable</ImplicitUsings>
hinzu, wie im folgenden Beispiel gezeigt:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
Globale using
-Anweisungen
Eine globale using
-Anweisung importiert einen Namespace für Ihre gesamte Anwendung statt für eine einzelne Datei. Diese globalen Direktiven können entweder durch Hinzufügen eines <Using>
Elements zur Projektdatei oder durch Hinzufügen der global using
-Direktive zu einer Codedatei hinzugefügt werden.
Sie können Ihrer Projektdatei auch ein <Using>
-Element mit einem Remove
-Attribut hinzufügen, um eine bestimmte implizite using
-Anweisung zu entfernen. Wenn z. B. das Feature für implizite using
-Anweisungen mit <ImplicitUsings>enable</ImplicitUsings>
aktiviert wurde, wird durch das Hinzufügen des folgenden <Using>
-Elements der Namespace System.Net.Http
aus den implizit importierten Namespaces entfernt:
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
Verwenden Sie den alten Programmstil
Ab .NET SDK 6.0.300 verfügt die console
-Vorlage über eine --use-program-main
-Option. Verwenden Sie es, um ein Konsolenprojekt zu erstellen, das keine Anweisungen der obersten Ebene verwendet und über eine Main
Methode verfügt.
dotnet new console --use-program-main
Die generierte Program.cs
sieht wie folgt aus:
namespace MyProject;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Verwenden des alten Programmstils in Visual Studio
Wenn Sie ein neues Projekt erstellen, befolgen Sie die Einrichtungsschritte, die zur Einrichtungsseite Zusätzliche Informationen führen. Aktivieren Sie auf dieser Seite das Kontrollkästchen Keine Anweisungen der obersten Ebene verwenden.
Nachdem Ihr Projekt erstellt wurde, lautet der
Program.cs
-Inhalt wie folgt:namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
Anmerkung
Visual Studio behält den Wert für die Optionen bei, wenn Sie das Projekt das nächste Mal basierend auf derselben Vorlage erstellen. Daher ist beim nächsten Erstellen eines Konsolen-App-Projekts standardmäßig das Kontrollkästchen „Keine Anweisungen der obersten Ebene verwenden“ aktiviert.
Der Inhalt der Program.cs
-Datei könnte sich unterscheiden, um dem Codestil zu entsprechen, der in den globalen Einstellungen des Visual Studio-Text-Editors oder der EditorConfig
-Datei definiert ist.
Weitere Informationen finden Sie unter Erstellen von portierbaren, benutzerdefinierten Editoreinstellungen mit EditorConfig und Optionen, Text-Editor, C#, Erweitert.