C# 9.0新特性

本文介绍了C# 9.0的候选新特性,包括原生大小的数字类型、Records和Pattern-based With-Expression、Type Classes、Dictionary Literals等。Records提供了一种轻量级的不可变类型,Type Classes受到Haskell的启发,增强了多态性,而Dictionary Literals简化了字典的创建。这些新特性将为C#开发者带来更丰富的编程体验。
摘要由CSDN通过智能技术生成

CandidateFeaturesForCSharp9

看到标题,是不是认为我把标题写错了?是的,C# 8.0还未正式发布,在官网它的最新版本还是Preview 5,通往C#9的漫长道路却已经开始.前写天收到了活跃在C#一线的 BASSAM ALUGILI 给我分享C# 9.0新特性,我在他文章的基础上进行翻译,希望能对大家有所帮助.

这是世界上第一篇关于C#9候选功能的文章。阅读完本文后,你将会为未来可能遇到的C# 9.0新特性做好更充分的准备。

这篇文章基于,

原生大小的数字类型

这次引入一组新类型(nint,nuint,nfloat等)'n'表示 native(原生) ,该特性允许声明一个32位或64位的数据类型,这取决于操作系统的平台类型。

nint nativeInt = 55; take 4 bytes when I compile in 32 Bit host.    
nint nativeInt = 55; take 8 bytes when I compile in 64 Bit host with x64 compilation settings.

xamarin中已存在类似的概念,

Records and Pattern-based With-Expression

这个功能我等待了很长时间,Records是一种轻量级的不可变类型,它可以是方法,属性,运算符等,它允许我们进行结构的比较, 此外,默认情况下,Records属性是只读的。

Records可以是值类型或引用类型。

Example

public class Point3D(double X, double Y, double Z);    
public class Demo     
{    
  public void CreatePoint()    
  {    
  var p = new Point3D(1.0, 1.0, 1.0);  
  }  
}

这些代码会被编译器转化如下形式.

public class Point3D    
{    
private readonly double <X>k__BackingField;    
private readonly double <Y>k__BackingField;    
private readonly double <Z>k__BackingField;    
public double X {get {return <X>k__BackingField;}}    
public double Y{get{return <Y>k__BackingField;}}    
public double Z{get{return <Z>k__BackingField;}}    
    
 public Point3D(double X, double Y, double Z)    
 {    
 <X>k__BackingField = X;    
 <Y>k__BackingField = Y;    
 <Z>k__BackingField = Z;    
 }    
    
 public bool Equals(Point3D value)    
 {    
  retur
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值