Freigeben über


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 Datei Program.cs:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

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 Ihre Anweisungen auf oberster 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 zum Code, den der Compiler generiert, wenn Sie Anweisungen der obersten Ebene verwenden, finden Sie in den Anweisungen auf oberster Ebene im Abschnitt "Grundlagen des C#-Handbuchs".

Wenn Sie mit Lernprogrammen arbeiten, die nicht aktualisiert werden, um .NET 6+-Vorlagen zu verwenden, verwenden Sie eine der folgenden beiden Optionen:

  • Verwenden Sie den neuen Programmstil, und fügen Sie beim Hinzufügen von Features neue Anweisungen der obersten Ebene hinzu.
  • Konvertieren Sie die neue Programmformatvorlage in die ältere Formatvorlage mit einer Program Klasse und einer Main Methode.

Wenn Sie die alten Vorlagen verwenden möchten, lesen Sie weiter unten in diesem Artikel die Verwendung des alten Programmstils .

Verwenden Sie den neuen Programmstil

Die Features, die das neue Programm vereinfachen, sind Anweisungen auf oberster Ebene, globale using Direktiven und implizite using Direktiven.

Der Begriff top-level statements bedeutet, dass der Compiler die Klassen- und Methodenelemente für Ihr Hauptprogramm generiert. Der Compiler deklariert die generierte Klasse und Einstiegspunktmethode im globalen Namespace. Sehen Sie sich den Code für die neue Anwendung an und stellen Sie sich vor, dass er die Anweisungen enthält, die von früheren Vorlagen innerhalb der Main-Methode generiert wurden und sich im globalen Namensraum befinden.

Fügen Sie dem Programm weitere Anweisungen hinzu, genau wie Sie im herkömmlichen Stil Anweisungen zu Ihrer Main Methode hinzufügen. Access args (Befehlszeilenargumente)verwenden awaitund den Ausgangscode festlegen. Sie können sogar Funktionen hinzufügen. Der Compiler erstellt sie als lokale Funktionen, die in der generierten Einstiegspunktmethode geschachtelt sind. Lokale Funktionen können keine Zugriffsmodifizierer (zum Beispiel public oder protected) enthalten.

Sowohl Anweisungen auf oberster Ebene als auch implizite using Direktiven vereinfachen den Code, aus dem Ihre Anwendung besteht. Um einem vorhandenen Lernprogramm zu folgen, fügen Sie der von der Vorlage generierten Program.cs Datei alle neuen Anweisungen hinzu. Stellen Sie sich vor, dass die von Ihnen geschriebenen Anweisungen zwischen den geöffneten und schließenden geschweiften Klammern in der Main-Methode in den Anweisungen des Tutorials liegen.

Wenn Sie das ältere Format bevorzugen, kopieren Sie den Code aus dem zweiten Beispiel in diesem Artikel, und fahren Sie mit dem Lernprogramm wie zuvor fort.

Weitere Informationen zu Anweisungen auf oberster Ebene finden Sie im Lernprogramm zur Erkundung von Anweisungen auf oberster Ebene.

Implizite using Direktiven

Der Begriff implizite using Direktiven bedeutet, dass der Compiler automatisch eine Reihe von using Direktiven 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 Direktiven benötigen using , die nicht implizit enthalten sind, fügen Sie sie der .cs Datei hinzu, die Anweisungen auf oberster Ebene oder andere .cs Dateien enthält. using Verwenden Sie für Richtlinien, die Sie in allen .cs Dateien in einer Anwendung benötigen, globale using Direktiven.

Implizite using Direktiven deaktivieren

Um dieses Verhalten zu entfernen und alle Namespaces in Ihrem Projekt manuell zu steuern, fügen Sie <ImplicitUsings>disable</ImplicitUsings> der Projektdatei im <PropertyGroup> Element hinzu, wie im folgenden Beispiel gezeigt:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

Globale using Direktiven

Eine globale using Direktive importiert einen Namespace für Ihre gesamte Anwendung anstelle einer einzelnen Datei. Fügen Sie diese globalen Direktiven hinzu, indem Sie ein <Using> Element in die Projektdatei einschließen oder die global using Direktive zu einer Codedatei hinzufügen.

Um eine bestimmte implizite using Direktive zu entfernen, fügen Sie ein <Using> Element mit einem Remove Attribut zu Ihrer Projektdatei hinzu. Ist das Feature für implizite using Direktiven mit <ImplicitUsings>enable</ImplicitUsings> aktiviert, entfernt das Hinzufügen des folgenden <Using> Elements den System.Net.Http Namespace von denen, die implizit importiert werden.

<ItemGroup>
  <Using Remove="System.Net.Http" />
</ItemGroup>

Verwenden Sie den alten Programmstil

Ab .NET SDK 6.0.300 verfügt die Vorlage console über die Option --use-program-main. 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 ist wie folgt:

namespace MyProject;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Verwenden des alten Programmstils in Visual Studio

  1. Wenn Sie ein neues Projekt erstellen, führen die Setupschritte zur Einrichtungsseite für Zusätzliche Informationen. Aktivieren Sie auf dieser Seite das Kontrollkästchen " Keine Anweisungen der obersten Ebene verwenden ".

    Visual Studio verwenden kein Kontrollkästchen für Anweisungen auf oberster Ebene

  2. 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 Optionswert für das nächste Mal bei, wenn Sie ein Projekt basierend auf derselben Vorlage erstellen. Wenn Sie zuletzt ein Konsolen-App-Projekt mit aktiviertem Kontrollkästchen "Keine Anweisungen der obersten Ebene verwenden" erstellt haben, wird diese Option aktiviert, wenn Sie das nächste Konsolen-App-Projekt erstellen. Der Inhalt der Datei Program.cs kann unterschiedlich sein, um mit dem Code-Stil übereinzustimmen, der in den globalen Visual Studio Texteditor-Einstellungen oder in der Datei EditorConfig definiert ist.

Weitere Informationen finden Sie unter Erstellen von portierbaren, benutzerdefinierten Editoreinstellungen mit EditorConfig und Optionen, Text-Editor, C#, Advanced.