聊聊 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# 顶级语句的推出有效地简化了代码书写,特别适合于小型程序和脚本。

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

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

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


相关文章
|
6月前
|
编译器 C# 开发者
C# 9.0中的顶级语句:简化程序入口的新特性
【1月更文挑战第13天】本文介绍了C# 9.0中引入的顶级语句(Top-level statements)特性,该特性允许开发者在不使用传统的类和方法结构的情况下编写简洁的程序入口代码。文章详细阐述了顶级语句的语法、使用场景以及与传统程序结构的区别,并通过示例代码展示了其在实际应用中的便捷性。
|
6月前
|
SQL
leetcode-SQL-570. 至少有5名直接下属的经理
leetcode-SQL-570. 至少有5名直接下属的经理
42 0
|
1月前
|
C# 开发者
浅谈 C# 中的顶级语句
浅谈 C# 中的顶级语句
|
人工智能 Python
人工智能导论——谓词公式化为子句集详细步骤
在谓词逻辑中,有下述定义: 原子(atom)谓词公式是一个不能再分解的命题。 原子谓词公式及其否定,统称为文字(literal)。$P$称为正文字,$\neg P$称为负文字。$P$与$\neg P$为互补文字。 <font color="ddd0000">任何文字的析取式称为子句(clause)。任何文字本身也是子句。</font> 由子句构成的集合称为子句集。 不包含任何文字的子句称为空子句,表示为NIL。 <font color="ddd0000">由于空子句不含有文字,它不能被任何解释满足,所以,空子句是永假的、不可满足的。</font> 在谓词逻辑中,任何一个谓词公式都可以通过应用等
1551 1
人工智能导论——谓词公式化为子句集详细步骤
|
Go
Go语句与表达式深度解析:全案例手册
Go语句与表达式深度解析:全案例手册
69 0
|
算法 C语言
if语句基础
if语句基础
|
C#
【C#基础】C# 常用语句讲解
编程语言 C# 常用语句的讲解。
109 0
【C#基础】C# 常用语句讲解
|
缓存 自然语言处理 Swift
本周推荐 | 表达式引擎的组合子实现方案
推荐语:本文清晰而详细地介绍了如何使用 Parser 组合子方案,结合 Monad 通过合理的分层、抽象和组合,在性能达标的情况下实现消息场景中函数式的表达式解析。非常具有实践意义,推荐阅读学习! ——大淘宝技术终端开发工程师 闲行
260 0
本周推荐 | 表达式引擎的组合子实现方案
DayDayUp:发明专利授予条件、撰写发明专利的注意事项以及申辩模板
DayDayUp:发明专利授予条件、撰写发明专利的注意事项以及申辩模板
C#编程基础——选择语句
C#编程基础——选择语句
257 0