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# 10.0 中都是有效的。 當您使用較新版本時,只需要撰寫 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 檔案。 如需應用程式中所有 .cs 檔案包含的 using
指示詞,請使用全域 using
指示詞。
停用隱含 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 會保留選項的值,供您下次使用同樣範本建立專案時使用,因此根據預設,您下次建立主控台應用程式專案時,[不使用最上層陳述式] 核取方塊會是已勾選的狀態。
為了符合全域 Visual Studio 文字編輯器設定或 EditorConfig
檔案中定義的程式碼樣式,Program.cs
檔案的內容可能會有所不同。
如需詳細資訊,請參閱使用 EditorConfig 建立可攜式自訂編輯器設定和選項、文字編輯器、C#、進階。