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
,設定結束代碼。 您甚至可以新增函式。 它們被創建為巢狀於所生成進入點方法內的本地函式。 本地函數無法包含任何存取修飾詞(例如,public
或 protected
)。
最上層語句和 隱含 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 檔案。 針對應用程式中所有
停用隱含 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 中使用舊的程序樣式
當您建立新專案時,安裝程式步驟會流覽至 [[其他資訊] 安裝頁面。 在此頁面上,選取 [不要使用頂層語句] 勾選框。
建立項目之後,
Program.cs
內容如下所示:namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
注意
Visual Studio 會在下次根據同一個範本建立專案時保留選項的值,因此預設情況下,下次建立控制台應用程式專案時,[不要使用最上層語句] 複選框將會被勾選。
Program.cs
檔案的內容可能會不同,以符合全域 Visual Studio 文字編輯器設定或 EditorConfig
檔案中定義的程式代碼樣式。
如需詳細資訊,請參閱 使用 EditorConfig 和 Options、Text Editor、C#、Advanced建立可攜式自定義編輯器設定。