车神ne的博客

.Net技术分享站

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

.Net 6+C#10.0正式版初体验

  昨晚,.Net 6正式版发布,今天一早我就迫不及待的下载安装了VS2022,同时体验了一下C#10.0的各种新特性。关于.Net 6的性能提升和具体内部细节还没来得及仔细研究,先给大家分享一下.Net 6或者说C# 10.0带来的新特性及对我们开发过程的影响。

1.顶级程序

  首先最直观可以看到的是当我们创建Web应用或者控制台应用的时候,我们会发现Main函数找不到了,程序编程了这个样子:

  ·   

 

  这其实并不是C#10.0的新特性,而是C# 9.0新特性中的“顶级程序”,只是在.Net5时使用VS默认生成的代码框架中并没有用到顶级程序的写法,而.Net 6的Web应用和控制台应用中使用了该写法。但是在.Net 6的WPF或WinForm应用默认代码中依旧维持原来的写法。

  对顶级程序用法进行研究后,我发现了以下规律:

  • 虽然.Net6中默认去掉了Main函数,我们依旧可以定义使用Main函数作为程序入口,但是仅限于不编写顶级函数的情况下,若存在顶级函数,则Main函数不会被默认执行。若已存在顶级程序,则自定义的Main函数不会被执行
  • 如果编写了顶级程序,则会默认出现Program类,而且这个类不是运行时生成的,我们在IDE中直接就可以打出来,同时,如果你额外在无命名空间的代码处定义一个Program类则会提示需要使用partail关键字。如下图所示

    

  •  顶级程序前或顶级函数中,不能声明类、接口、命名空间、record等内容。如果在同一文件中编写,则此类声明必须写在顶级程序后面。

2.全局引用

  在C#10.0语言特性说明中,我们可以看到全局应用。为了方便大家理解和使用全局引用,我总结了以下几个特点:

  • .Net6中默认存在有一部分全局引用,其使用开关为各项目csproj文件的ImplicistUsings属性,如果该值为enable,则使用默认引用,如果值为disable则不使用默认引用,如下图:

     

  • 除默认全局引用外,我们声明自己所需要的全局引用,用法为:global using xxx; 全局引用的范围只限于其所在项目,若A项目引用B项目,B的全局引用在A中无效,同时A项目的全局引用在B中也无效。

3.同一个解构中的赋值和声明

  额,,,C#10.0官方文档是这么写的,但是析构是什么东西,从文档上看明显不是析构函数,翻找资料后,发现其实这个特性针对的是tuple(元组),这东西在C#7.0中就已经出现,但是一直很少被用到,官方说法是主要应对一些需要多个输入或输出的算法。那么我们还是来看一下C#10.0在这一块更新了什么。

  官方文档中对此项更新的写法是这样:

    

 

  如果大家对元组不熟悉,会搞不清楚point是什么,怎么写。实际我们写出完整的例子应该是这样的

复制代码
 1 var point = (1, 2);
 2 
 3 int x1 = 0;
 4 int y1 = 0;
 5 (x1, y1) = point;
 6 
 7 int x2, int y2) = point;
 8 
 9 int x3 = 0;
10 (x3, int y3) = point;
复制代码

  其中第3至5行和第7行的两种写法,从C#7.0到现在一直是可用的,但是第9至10行这种写法,在C#9.0及之前版本是不支持的,10.0之后,加入了对该写法的支持。

 

  .Net6及C#10.0带来的新特性非常多,今天先写到这里,后面的特性解读我会尽快编写完成。

posted on   车神ne  阅读(5544)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示