IDC

如何在 C#9 中使用程序 (Top-Level)

作者:admin 2021-04-13 我要评论

本文转载自微信公众号「码农读书」,作者码农读书 。转载本文请联系码农读书公众号。 当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 con...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

本文转载自微信公众号「码农读书」,作者码农读书 。转载本文请联系码农读书公众号

当我们用 C# 进行编码的时候,总需要写很多的模板代码,即使是最简单的 console 程序,想象一下,如果去测试一个 类库 或者 API 的功能,通常你会用 Console 程序去实现,在开始工作的时候会发现你受到了 C# 标准模板的限制,业务逻辑必须要写在 Main 里,如下代码所示:

  1. class Program 
  2.    { 
  3.        static void Main(string[] args) 
  4.        { 
  5.            //todo 
  6.        } 
  7.    } 

顶级程序 是 C#9 中引入的一个新概念,允许你直接写自己的业务逻辑而不必受到模板代码的限制,顶级程序 是一个非常的特性,可以让代码更加的干净,简短和可读,你可以通过顶级程序去探索新的 idea,这篇文章将会讨论如何在 C#9 中使用顶级程序。

顶级程序

在 C# 9.0 之前,下面的写法在 Console 程序中已经是最小化的了。

  1. using System; 
  2. namespace IDG_Top_Level_Programs_Demo 
  3.     class Program 
  4.     { 
  5.         static void Main(string[] args) 
  6.         { 
  7.             Console.WriteLine("Hello World!"); 
  8.         } 
  9.     } 

在 C# 9.0 时代,可以祭出 顶级程序 来消除那些烦人的模板代码,让代码的逻辑意图更明显,改造后的代码如下:

  1. using System; 
  2. Console.WriteLine("Hello World!"); 

顶级程序中的方法

你也可以在顶级程序中使用方法,如下例子所示:

  1. System.Console.WriteLine(DisplayMessage("Joydip!")); 
  2. System.Console.Read(); 
  3. static string DisplayMessage(string name
  4.     return "Hello, " + name

程序跑起来后,控制台将会输出:Hello, Joydip!

顶级程序中的类

你也可以在顶级程序中使用类,结构体,枚举,下面的代码展示了如何使用。

  1. System.Console.WriteLine(new Author().DisplayMessage("Joydip!")); 
  2. System.Console.Read(); 
  3. public class Author 
  4.     public string DisplayMessage(string name
  5.     { 
  6.         return "Hello, " + name
  7.     } 

顶级程序的原理分析

现在我们来分析一下,顶级程序的底层逻辑到底是怎么样的,它本质上是一种语法糖,一种编译器的特性,也就是说你没有写模板代码的时候,编译器会帮你生成,替你负重前行,参考下面的代码段。

  1. using System; 
  2. Console.WriteLine("Hello World!"); 

然后用在线工具 SharpLab https://sharplab.io/ 看一下编译器替你补齐的代码。

  1. using System; 
  2. using System.Diagnostics; 
  3. using System.Reflection; 
  4. using System.Runtime.CompilerServices; 
  5. using System.Security; 
  6. using System.Security.Permissions; 
  7. [assembly: CompilationRelaxations(8)] 
  8. [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] 
  9. [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] 
  10. [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] 
  11. [assembly: AssemblyVersion("0.0.0.0")] 
  12. [module: UnverifiableCode] 
  13. [CompilerGenerated] 
  14. internal static class <Program>$ 
  15.     private static void <Main>$(string[] args) 
  16.     { 
  17.         Console.WriteLine("Hello World!"); 
  18.     } 

总的来说,顶级程序 非常适合那些想 快速试错,验证想法 的场景,有一点要特别注意,应用程序中只能仅有一个文件使用 顶级程序,如果存在多个,编译器会抛出错误的,还有一点,如果你是 C# 新手,你可能不理解顶级程序的底层逻辑,更好的方式就是老老实实的使用原生模板代码,当你主宰了 Main 后,你将会理解 顶级程序 是多么的短小精悍!

译文链接:https://www.infoworld.com/article/3612196/how-to-use-top-level-programs-in-csharp-9.html


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/D0-dVlonuwH3JBK_2bznjQ

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何在 C#9 中使用程序 (Top-Level)

    如何在 C#9 中使用程序 (Top-Level)

  • Python 工具链让你写的代码更规范

    Python 工具链让你写的代码更规范

  • 《吃透 MQ 系列》之扒开 Kafka 的神秘

    《吃透 MQ 系列》之扒开 Kafka 的神秘

  • 聊聊我的Go语言初体验

    聊聊我的Go语言初体验

腾讯云代理商
海外云服务器