百科问答小站 logo
百科问答小站 font logo



如何看待即将发布的 C# 8.0? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

Nullable reference types

这个的确可以省掉一些显示的throw new ArgumentNullException,还可以通过减少防御性代码来稍微提升性能。但实际意义可能没有想的大。

简单来说这货最大的意义就是,如果一个非公开方法的所有调用方都确保了调用的时候引用类型参数不会为null,那么这个方法可以不进行参数为null的检查。以前这事儿是要程序员用肉眼看的。


Async streams

这个会比较实用,一直奇怪为什么没有人做AsyncSelect或者LINQ方法的一系列async版本,原来是憋大招直接async foreach这个比较爽了。

不出意外有了async foreach,类库必然会增加对LINQ扩展方法的async支持。


Ranges and indices

C语言的下标从零开始的确带来了一些混乱,这个玩意儿我的场景中用的不多,但是可以理解那些算长度最后一个元素位置的人的痛苦。


Default implementations of interface members

说多继承什么的真是想多了,我没猜错的话这货无非就是自动创建一个静态类然后用Attribute关联上就好了,就是扩展方法的一个缩减适用范围的语法糖,别那么激动。我觉得这货唯一的意义就是让C#本来就很长的方法重载规则再增加几段……


其实上面那些都是小菜,这一次最大的改动应该是Pattern,从C# 7.0引入了残废品的match pattern以来,除了is pattern零星点缀之外其实没进行大规模的普及。一个最重要的原因是match pattern竟然不是expression,这基本就是个废物。C# 8.0终于开始进行了expression的尝试,这才是8.0最值得重视的地方。


虽然我还是觉得switch expression语法丑了点儿,其实可以看看我之前提的问题,新的这个语法和我想的思路是差不多的,譬如用=>而不是:来分隔match condition和expression。

唯一的区别在于关键字在前在后,其实仔细想想关键字在后也许做嵌套的时候更好看点?




  

相关话题

  中国中央政府 2014 年采购为什么禁止设备预装 Windows 8 系统? 
  如何看待微软 Build 2019 上发布的新 WSL2? 
  C# 语言和 .NET 框架相比 Java、PHP、Python 等 web 开发技术有哪些优劣? 
  你见过哪些令你瞠目结舌的C#代码? 
  为什么微软日渐萎靡但仍没有改变? 
  一门编程语言,先将代码编译为C,再由C编译器编译为可执行文件,是否可行? 
  怎么在.net 平台上用和 WP7 开发类似的技术或思想来实现 Android 开发? 
  对于大型项目,静态类型是必须的吗? 
  如果编程语言有性别?Java、C++、C、C#是男是女?是GAY还是LES? 
  如何评价微软官宣将会在 6.24 发布下一代 Windows 操作系统的信息? 

前一个讨论
在暴力破解密码的过程中,黑客们是如何绕开试错次数的?
下一个讨论
货币的未来是怎样的?货币最终是否会虚拟化/数字化?





© 2025-04-21 - tinynew.org. All Rights Reserved.
© 2025-04-21 - tinynew.org. 保留所有权利