top-level如何在C#9 中使用
短信预约 -IT技能 免费直播动态提醒
本篇文章为大家展示了top-level如何在C#9 中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
顶级程序
在 C# 9.0 之前,下面的写法在 Console 程序中已经是最小化的了。
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!
顶级程序中的类
你也可以在顶级程序中使用类,结构体,枚举,下面的代码展示了如何使用。
System.Console.WriteLine(new Author().DisplayMessage("Joydip!"));System.Console.Read();public class Author{ public string DisplayMessage(string name) { return "Hello, " + name; }}
顶级程序的原理分析
现在我们来分析一下,顶级程序的底层逻辑到底是怎么样的,它本质上是一种语法糖,一种编译器的特性,也就是说你没有写模板代码的时候,编译器会帮你生成,替你负重前行,参考下面的代码段。
using System;Console.WriteLine("Hello World!");
然后用在线工具 SharpLab https://sharplab.io/ 看一下编译器替你补齐的代码。
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 <Program>${ private static void <Main>$(string[] args) { Console.WriteLine("Hello World!"); }}
上述内容就是top-level如何在C#9 中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341