聊聊 C# 中的顶级语句

简介: 聊聊 C# 中的顶级语句

前言

在 C# 9.0 版本之前,即使只编写一行输出 “Hello world” 的 C# 代码,也需要创建一个 C# 类,并且需要为这个 C# 类添加 Main 方法,才能在 Main 方法中编写代码。从 C# 9.0 开始,C# 增加了 “顶级语句” 语法,从此程序员可以直接在 C# 文件中编写入口代码,不再需要声明类和 Main 方法。

今天我们来聊聊这个顶级语句。

顶级语句的表现形式

  1. 创建一个 .NET Core Console 项目
  2. 清空 Program.cs 文件中的预定义模板生成的代码
  3. 直接在 Program.cs 文件里输入以下语句
Console.WriteLine("Hello, World!");
  1. 运行项目,控制台直接打印出 “Hello, World!”
  2. 至此,就完成顶级语句的演示,无需声明命名空间和类,也无需定义 Main 方法,就完成以前 Main 方法所做的事情。

顶级语句的本质

顶级语句实例上是一个语法糖,旨在简化程序的结构,使得编写简单程序或脚本更加方便。

通过反编译上面的程序生成的程序集也可以证明这一点,实际上编译器在后台给这个 Program.cs 文件自动生成了一个名为 Program 类和 Main 方法。

顶级语句的优势

  1. 简化代码结构
    可以在顶级语句直接使用 await 语法调用异步方法和创建方法,比如以下代码:
// 在顶级语句中,可以直接使用 await 语法调用异步方法,
// 而且在顶级语句文件中也可以声明方法
int i = 1, j = 2;
int w = Add(i, j);
await File.WriteAllTextAsync(@"D:\NETCoreSample\1.txt", $"Hellow {w}");
int Add(int i, int j)
{
  return i + j;
}
  1. 快速开发快速测试
    有时候需要测试一个简单功能,比如验证一个正则表达式是否工作,程序 员就可以利用顶级语句快速编写和测试小段代码,而不需要创建完整的类和方法结构。
  2. 提高可读性
    顶级语句减少了样板代码,代码逻辑更加直观,代码更加简洁易读。
  3. 适用于脚本
    对于一些简单的脚本或命令行工具,顶级语句提供了更自然的编写方式

顶级语句的注意事项

因为顶级语句的本质只是一个语法糖,只是让编译器帮助程序员简化工作,因此在使用时要注意:

  1. 同一个项目中只能有一个文件具有顶级语句
  2. 顶级语句并不是用来替代原本的 Main 方法的,我们仍然可以用传统的 Main 方法编写入口代码

总结

C# 顶级语句的推出有效地简化了代码书写,特别适合于小型程序和脚本。

它的出现提高了代码的可读性和可维护性,使得程序员可以更专注于逻辑实现而非代码结构。

同时在使用时也要清楚它的本质,避开一些不必要的坑。

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊程序人生,共同学习,共同进步


相关文章
|
14天前
|
数据采集 供应链 数据可视化
干了多年数据分析,才发现90%的人都做错了这10步
很多企业数据分析常陷误区:重图表轻业务。本文直击十大通病——从问题定义不清、口径不统一,到只描述不归因、无行动建议等,强调分析必须围绕业务目标展开,打通数据与决策,让分析真正驱动改善。(239字)
|
26天前
|
存储 前端开发 NoSQL
高并发场景下的订单幂等性设计:从重复支付到精准扣款的实战
跨境电商订单系统需解决重复提交导致的重复下单问题。本文详解幂等性原理与实践:通过唯一订单号+数据库索引、Redis幂等令牌(含Lua原子校验)、订单号复用及多服务协同等方案,兼顾可靠性与性能,核心在于唯一标识、状态记录与原子操作三要素。(239字)
140 0
|
2月前
|
数据采集 安全 算法
数据不出库,也能一起算?我用隐私计算做了一次跨机构联合分析,终于明白它为什么火了
数据不出库,也能一起算?我用隐私计算做了一次跨机构联合分析,终于明白它为什么火了
215 1
|
1月前
|
人工智能 安全 IDE
AI研发管理是什么?从工具提效到流程重构
AI研发管理不是简单给研发团队配一个AI工具,它真正改变的是研发管理的运行方式:从需求澄清、任务拆解、进度跟踪、风险识别到知识沉淀,AI正在从个人效率工具走向流程协同能力,推动研发管理从局部提效进入系统重构。
121 0
|
5月前
|
人工智能 弹性计算 自然语言处理
3步极速部署!阿里云OpenClaw一键部署保姆级教程
OpenClaw(原Clawdbot/Moltbot)是开源AI自动化代理,支持自然语言指令直接执行文件管理、日程安排、跨平台协同、代码辅助等任务。阿里云提供一键部署方案,3步即可拥有专属AI助理,零代码、本地优先、多端适配,开箱即用!
1291 3
|
前端开发
给elmentui中的el-table-column 添加背景色怎么加
本示例通过自定义 ECharts 图例的 `formatter` 函数,实现在图例中同时显示名称、数值和百分比。代码中还优化了图例布局和饼图标签样式,使数据展示更清晰直观。
1287 0
|
缓存 Ubuntu Windows
Ubuntu系统安装软件不难,掌握几个命令即可
通过上面的命令,基本就可以掌握管理Ubuntu操作系统的软件安装卸载管理。
|
人工智能 JSON API
HarmonyOS学习路之开发篇—AI功能开发(语音识别)
语音识别功能提供面向移动终端的语音识别能力。它基于华为智慧引擎(HUAWEI HiAI Engine)中的语音识别引擎,向开发者提供人工智能应用层API。该技术可以将语音文件、实时语音数据流转换为汉字序列,准确率达到90%以上(本地识别95%)。
|
开发工具 git
GitHub——Error: Process completed with exit code 126.
GitHub——Error: Process completed with exit code 126.
544 1
GitHub——Error: Process completed with exit code 126.
|
算法 Java Python
Python教程:深入了解Python垃圾回收机制
在Python中,垃圾回收(Garbage Collection)是一种自动管理内存的机制,它可以自动识别和清理不再使用的对象,释放它们占用的内存空间,以提高内存利用率和程序性能。
682 3

热门文章

最新文章