共用方式為


C# 主控台應用程式範本會產生最上層語句

從 .NET 6 開始,新 C# 控制台應用程式的專案範本會在 Program.cs 檔案中產生下列程式代碼:

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

新的輸出會使用最新的 C# 功能,以簡化程式撰寫所需的程式代碼。 針對 .NET 5 和舊版,控制台應用程式範本會產生下列程式代碼:

using System;

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

在上述程式代碼中,實際命名空間取決於項目名稱。

這兩種表單代表相同的程式。 這兩者在 C# 中都是有效的。 當您使用較新版本時,只需要撰寫 Main 方法的主體。 編譯程式會產生具有進入點方法的 Program 類別,並將所有最上層語句放在該方法中。 產生的方法名稱不是 Main,這是程式代碼無法直接參考的實作詳細數據。 您不需要包含其他程式元素,編譯器會自動為您生成它們。 您可以在 C# 指南的基本概念一節中使用最上層 語句一文中 最上層語句時,深入瞭解編譯程式所產生的程式代碼。

您有兩個選項可搭配尚未更新使用 .NET 6+ 範本的教學課程:

  • 使用新的程序樣式,在新增功能時新增最上層語句。
  • 使用 Program 類別和 Main 方法,將新的程式樣式轉換成較舊的樣式。

如果您想要使用舊範本,請參閱本文後面的 使用舊程序樣式

使用新的程序樣式

讓新程式更簡單的功能包括 最上層語句全域指令 using,和 隱含指令 using

最上層語句一詞 表示編譯程式會產生主要程序的類別和方法元素。 編譯程式產生的類別和進入點方法會在全域命名空間中宣告。 您可以查看新應用程式的程式代碼,並假設它包含先前範本所產生之 Main 方法內的語句,但在全域命名空間中。

您可以將更多語句新增至程式,就像您可以在傳統樣式中將更多語句新增至 Main 方法一樣。 您可以 存取 args (命令行自變數)使用 await設定結束代碼。 您甚至可以新增函式。 它們被創建為巢狀於所生成進入點方法內的本地函式。 本地函數無法包含任何存取修飾詞(例如,publicprotected)。

最上層語句和 隱含 using 指示詞 簡化構成應用程式的程序代碼。 若要遵循現有的教學課程,請將任何新語句新增至範本所產生的 Program.cs 檔案。 您可以想像您在教程說明中撰寫的語句,是位於 Main 方法的大括號之間。

如果您想要使用較舊的格式,您可以從本文中的第二個範例複製程序代碼,並依照先前的指示繼續進行教學課程。

您可以在教學課程的探索中更深入了解頂層語句,頂層語句

隱含 using 指令

隱含 using 指示詞一詞 表示編譯程式會根據專案類型自動新增一組 using 指示 詞。 針對主控台應用程式,應用程式會隱含地包含下列指示詞:

  • using System;
  • using System.IO;
  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Net.Http;
  • using System.Threading;
  • using System.Threading.Tasks;

其他應用程式類型包含這些應用程式類型通用的更多命名空間。

如果您需要未隱含包含的 using 指示詞,您可以將它們新增至包含最上層語句的 .cs 檔案或其他 .cs 檔案。 針對應用程式中所有 .cs 檔案所需的 指示詞,請使用全域 指示詞

停用隱含 using 指示詞

如果您想要移除此行為並手動控制專案中的所有命名空間,請將 <ImplicitUsings>disable</ImplicitUsings> 新增至項目檔中的 <PropertyGroup> 元素,如下列範例所示:

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

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

</Project>

全域 using 指令

全域 using 指令 匯入整個應用程式的命名空間,而非僅限於單一檔案。 您可以在專案檔中加入 <Using> 項目,或在程式碼檔案中加入 global using 指示,來新增這些全域指示詞。

您也可以將具有 Remove 屬性的 <Using> 項目新增到您的專案檔案中,以移除特定的 隱含 using 指示詞。 例如,如果使用 <ImplicitUsings>enable</ImplicitUsings>開啟隱含 using 指示詞功能,新增下列 <Using> 項目將會從隱含匯入的命名空間中移除 System.Net.Http 命名空間:

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

使用舊的程序樣式

從 .NET SDK 6.0.300 開始,console 範本具有 --use-program-main 選項。 使用它來建立主控台專案,該專案不使用最上層語句,且具有 Main 方法。

dotnet new console --use-program-main

產生的 Program.cs 如下所示:

namespace MyProject;

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

在 Visual Studio 中使用舊的程序樣式

  1. 當您建立新專案時,安裝程式步驟會流覽至 [[其他資訊] 安裝頁面。 在此頁面上,選取 [不要使用頂層語句] 勾選框。

    Visual Studio 不使用最上層語句複選框

  2. 建立項目之後,Program.cs 內容如下所示:

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

注意

Visual Studio 會在下次根據同一個範本建立專案時保留選項的值,因此預設情況下,下次建立控制台應用程式專案時,[不要使用最上層語句] 複選框將會被勾選。 Program.cs 檔案的內容可能會不同,以符合全域 Visual Studio 文字編輯器設定或 EditorConfig 檔案中定義的程式代碼樣式。

如需詳細資訊,請參閱 使用 EditorConfigOptions、Text Editor、C#、Advanced建立可攜式自定義編輯器設定。