前言

在C# 9版本中引入了一项新特性:顶级语句,这一特性允许在不显式定义 Main 方法的情况下直接编写代码。

传统的写法

namespace TestStatements
{
    internal class Program
    {
        static void Main(string[] args)
        {
            foreach (var arg in args)
            {
                Console.WriteLine(arg);
            }
            Console.WriteLine("Hello, 追逐时光者!");
        }
    }
}

顶级语句写法

foreach (var arg in args)
{
    Console.WriteLine(arg);
}
Console.WriteLine("Hello, 追逐时光者!");

顶级语句的优势

  • 省去了 Main 方法和命名空间声明,使得代码更加简洁。
  • 特别适合编写简单的控制台应用、脚本和演示代码。
  • 对于初学者来说,不需要了解太多复杂的语法结构就可以开始编写 C# 程序。

顶级语句的不足

  • 顶级语句更适合于简单的程序,对于大型复杂的项目,传统的 Main 方法和命名空间这些还是非常有必要的。
  • 对于习惯了传统结构的开发者来说,顶级语句可能会让代码的组织结构显得不够明确。
  • 如果与其他 C# 版本或一些特定的项目结构混用,可能会导致兼容性问题。

最后总结

顶级语句通过简化代码结构,降低了学习曲线并提高了开发效率,特别适合初学者和编写简单程序的场景。然而,在大型项目中,传统的代码结构依然是必要的。因此,顶级语句和传统方法各有其适用的场景和优势,开发者可以根据具体需求选择使用哪种方式。对于我个人而言还是比较喜欢传统的写法,看起来更直观且代码的组织结构分明。

参考文章

浅谈 C# 中的顶级语句的更多相关文章

  1. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  2. 浅谈MySQL中优化sql语句查询常用的30种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  3. Mysql 性能优化7【重要】sql语句的优化 浅谈MySQL中优化sql语句查询常用的30种方法(转)

    原文链接   http://www.jb51.net/article/39221.htm 这篇文章大家都在转载,估计写的有条理吧,本人稍微做一下补充 1.对查询进行优化,应尽量避免全表扫描,首先应考虑 ...

  4. 浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  5. 浅谈Java中switch分支语句

    前言: 在程序中遇到多分支选择的时候,想必大家都喜欢用if...else if...else...语句,尤其是初学者,因为在了解switch语句之前,我也是只会用if...else语句.那么现在看完这 ...

  6. 浅谈Javascript中的Label语句

    如: begin: for (var i = 0; i < 10 ; i++ ){ alert(i); } 举一个比较典型的例子,看完后即明白 Label 的应用:(未添加 Label) var ...

  7. 浅谈Java中的对象和引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  8. 转【】浅谈sql中的in与not in,exists与not exists的区别_

    浅谈sql中的in与not in,exists与not exists的区别   1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...

  9. 浅谈sql中的in与not in,exists与not exists的区别

    转 浅谈sql中的in与not in,exists与not exists的区别   12月12日北京OSC源创会 —— 开源技术的年终盛典 »   sql exists in 1.in和exists ...

  10. 浅谈Java中的深拷贝和浅拷贝(转载)

    浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...

随机推荐

  1. Java-用户登录验证案例

    用户登录验证 1.案例需求: 1.访问带有验证码的登录页面login.jsp 2.用户输入用户名,密码以及验证码 * 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 * 如果验证码输入 ...

  2. linux信号机制(初识版)

    转载 https://www.zhihu.com/question/24913599/answer/2584544572 信号是操作系统内核为我们提供用于在进程间通信的机制,内核可以利用信号来通知进程 ...

  3. 解决方案 | Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7.2)

    一.问题 Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7 ...

  4. Apache Kyuubi 在小米大数据平台的应用实践

    导读:今天分享的主题是<Kyuubi 在小米大数据平台的应用实践>,主要分为四部分内容: Kyuubi 在小米的落地过程 打造易用和高可用的 Kyuubi 服务 基于 kyuubi 的改进 ...

  5. TokenObtainPairSerialize

    TokenObtainPairSerializer是Django REST framework的SimpleJWT库提供的序列化器.它用于对用户凭据(如用户名和密码)进行序列化和验证,并在成功的身份验 ...

  6. [rCore学习笔记 07]移除标准库依赖

    改造Rust hello world 移除println!宏 rustc添加对裸机的支持 rustup target add riscv64gc-unknown-none-elf detail rus ...

  7. PHP进阶

    只是简要说明起原理和用法,具体可以百度 abstract 抽象类 抽象类是指在 class 前加了 abstract 关键字且存在抽象方法,不带{},如public function test() i ...

  8. 优化 GitHub 体验的浏览器插件「GitHub 热点速览」

    上周,GitHub 有个"安全问题"--CFOR(Cross Fork Object Reference)冲上了热搜,该问题的表现是: 远程仓库的提交内容任何人可以访问,即使已被删 ...

  9. k8s 环境搭建(2)

    安装docker组件 配置本地源或者自带的网络源2选1 1.切换镜像源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce ...

  10. .NET8 Blazor 从入门到精通:(一)关键概念

    目录 Blazor 的关键概念 项目模板 Razor 语法 依赖注入 注入配置 HeadOutlet 组件 @code 分离 Blazor 调试 CSS 隔离 调用JavaScript 最近在学习 B ...