從 .NET 6 (C# 10)開始,建立控制台專案(Console Application)後在應用程式入口的 Program.cs 檔案中,已經被簡化為下面這個樣子:
依照官方說法,這是 C# 的最新功能 — top-level statements,可以簡化程式撰寫。編譯器會自動合成一個 Program 類別,並將所有頂級語句放在其中 Main 方法,也就是目前直接寫在 Program.cs 程式碼的部分會被視為 Main 方法中的一部份。
雖然在程式碼裡面沒有看到 args,不過其實依然可以存取 args 參數,執行程式時傳入的參數會被正常顯示。
在 Github issues - Should the console project template use top-level statements #27420 中有許多人反對這樣簡化的方式,也有人覺得和其他文件不一致,在一開始會無法理解為什麼 Program.cs 和其他程式碼檔案的規則不同。
這樣的作法似乎有些奇怪,畢竟為了使用舊的樣式,需要先安裝 .NET 5,建立好專案後再手動將專案「升級」
其實有個比較簡單的做法,就是直接在 Program.cs 檔案中手動以「舊的樣式」寫一遍即可
不知道各位對這種新的寫法有什麼感想?筆者是覺得雖然平時開新專案測試程式時程式碼好像有比較少、比較簡潔,但還是以前的寫法比較習慣,不過現在除了比較大型的程式要在 Program.cs 寫比較多程式時會使用舊的寫法以外,其他的都會依照官方建議的撰寫,不會刻意切換回去,畢竟已經是確定的改變了,只是如果不熟悉 .NET 6 的朋友問到時可能就要稍微解釋一下就是了。
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
依照官方說法,這是 C# 的最新功能 — top-level statements,可以簡化程式撰寫。編譯器會自動合成一個 Program 類別,並將所有頂級語句放在其中 Main 方法,也就是目前直接寫在 Program.cs 程式碼的部分會被視為 Main 方法中的一部份。
雖然在程式碼裡面沒有看到 args,不過其實依然可以存取 args 參數,執行程式時傳入的參數會被正常顯示。
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
// 顯示傳入參數
foreach (var arg in args)
{
Console.WriteLine(arg);
}
在 Github issues - Should the console project template use top-level statements #27420 中有許多人反對這樣簡化的方式,也有人覺得和其他文件不一致,在一開始會無法理解為什麼 Program.cs 和其他程式碼檔案的規則不同。
恢復舊版的 Program.cs 樣式
在微軟官方的 Use the old program style 建議中,建立 .NET 5 專案,就會以舊的樣式產生。然後將 <TargetFramework> 改為 net6.0這樣的作法似乎有些奇怪,畢竟為了使用舊的樣式,需要先安裝 .NET 5,建立好專案後再手動將專案「升級」
其實有個比較簡單的做法,就是直接在 Program.cs 檔案中手動以「舊的樣式」寫一遍即可
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World! 111");
foreach (var arg in args)
{
Console.WriteLine(arg);
}
}
}
不知道各位對這種新的寫法有什麼感想?筆者是覺得雖然平時開新專案測試程式時程式碼好像有比較少、比較簡潔,但還是以前的寫法比較習慣,不過現在除了比較大型的程式要在 Program.cs 寫比較多程式時會使用舊的寫法以外,其他的都會依照官方建議的撰寫,不會刻意切換回去,畢竟已經是確定的改變了,只是如果不熟悉 .NET 6 的朋友問到時可能就要稍微解釋一下就是了。
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com