新聞中心
本文轉(zhuǎn)載自微信公眾號「碼農(nóng)讀書」,作者碼農(nóng)讀書 。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)讀書公眾號。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信小程序等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體。
當(dāng)我們用 C# 進(jìn)行編碼的時候,總需要寫很多的模板代碼,即使是最簡單的 console 程序,想象一下,如果去測試一個 類庫 或者 API 的功能,通常你會用 Console 程序去實現(xiàn),在開始工作的時候會發(fā)現(xiàn)你受到了 C# 標(biāo)準(zhǔn)模板的限制,業(yè)務(wù)邏輯必須要寫在 Main 里,如下代碼所示:
- class Program
- {
- static void Main(string[] args)
- {
- //todo
- }
- }
頂級程序 是 C#9 中引入的一個新概念,允許你直接寫自己的業(yè)務(wù)邏輯而不必受到模板代碼的限制,頂級程序 是一個非常的特性,可以讓代碼更加的干凈,簡短和可讀,你可以通過頂級程序去探索新的 idea,這篇文章將會討論如何在 C#9 中使用頂級程序。
頂級程序
在 C# 9.0 之前,下面的寫法在 Console 程序中已經(jīng)是最小化的了。
- using System;
- namespace IDG_Top_Level_Programs_Demo
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Hello World!");
- }
- }
- }
在 C# 9.0 時代,可以祭出 頂級程序 來消除那些煩人的模板代碼,讓代碼的邏輯意圖更明顯,改造后的代碼如下:
- using System;
- Console.WriteLine("Hello World!");
頂級程序中的方法
你也可以在頂級程序中使用方法,如下例子所示:
- System.Console.WriteLine(DisplayMessage("Joydip!"));
- System.Console.Read();
- static string DisplayMessage(string name)
- {
- return "Hello, " + name;
- }
程序跑起來后,控制臺將會輸出:Hello, Joydip!
頂級程序中的類
你也可以在頂級程序中使用類,結(jié)構(gòu)體,枚舉,下面的代碼展示了如何使用。
- System.Console.WriteLine(new Author().DisplayMessage("Joydip!"));
- System.Console.Read();
- public class Author
- {
- public string DisplayMessage(string name)
- {
- return "Hello, " + name;
- }
- }
頂級程序的原理分析
現(xiàn)在我們來分析一下,頂級程序的底層邏輯到底是怎么樣的,它本質(zhì)上是一種語法糖,一種編譯器的特性,也就是說你沒有寫模板代碼的時候,編譯器會幫你生成,替你負(fù)重前行,參考下面的代碼段。
- using System;
- Console.WriteLine("Hello World!");
然后用在線工具 SharpLab https://sharplab.io/ 看一下編譯器替你補(bǔ)齊的代碼。
- using System;
- using System.Diagnostics;
- using System.Reflection;
- using System.Runtime.CompilerServices;
- using System.Security;
- using System.Security.Permissions;
- [assembly: CompilationRelaxations(8)]
- [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
- [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
- [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
- [assembly: AssemblyVersion("0.0.0.0")]
- [module: UnverifiableCode]
- [CompilerGenerated]
- internal static class
$ - {
- private static void
$(string[] args) - {
- Console.WriteLine("Hello World!");
- }
- }
總的來說,頂級程序 非常適合那些想 快速試錯,驗證想法 的場景,有一點要特別注意,應(yīng)用程序中只能僅有一個文件使用 頂級程序,如果存在多個,編譯器會拋出錯誤的,還有一點,如果你是 C# 新手,你可能不理解頂級程序的底層邏輯,更好的方式就是老老實實的使用原生模板代碼,當(dāng)你主宰了 Main 后,你將會理解 頂級程序 是多么的短小精悍!
譯文鏈接:https://www.infoworld.com/article/3612196/how-to-use-top-level-programs-in-csharp-9.html
網(wǎng)頁名稱:如何在 C#9 中使用程序 (Top-Level)
網(wǎng)頁地址:http://fisionsoft.com.cn/article/dpcghoo.html


咨詢
建站咨詢
