在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、Record Struct虽然在上一个版本中就有了 它的使用方式如下: record struct Point(int X, int Y); 在 代码如下: var p1 = new Point(1, 2); var p2 = p with { X = 2 }; Console.WriteLine(p1); Console.WriteLine(p2); Console.WriteLine(new Point()); 运行上述代码可以看到即使没有显式声明无参构造还是会生成一个无参构造来初始化。 上述代码输出如下: Point { X = 1, Y = 2 } Point { X = 2, Y = 2 } Point { X = 0, Y = 0 } 二、readonly struct record我们可以使用 属性的声明是这样的: internal readonly struct Point : IEquatable { public int X { get; init; } public int Y { get; init; } public Point(int X, int Y) { this.X = X; this.Y = Y; } } 三、Parameterless Constructor
代码如下如下: Console.WriteLine(new Point1().ToString()); Console.WriteLine(default(Point1).ToString()); Console.WriteLine(Activator.CreateInstance()); struct Point1 { public int X { get; set; } public int Y { get; set; } private int Z { get; set; } public Point1() { X = 1; Y = 2; Z = 3; } public override string ToString() { return $"{X}_{Y}_{Z}"; } } 这里需要注意 代码输出结果如下:
除了 代码如下: Console.WriteLine((new Point1() with { X = 2 }).ToString()); Console.WriteLine(); var obj = new { X = 1, Y = 1 }; Console.WriteLine(JsonSerializer.Serialize(obj)); Console.WriteLine(JsonSerializer.Serialize(obj with { X = 3, Y = 3 })); 输出结果如下:
到此这篇关于 NET6新特新 struct优化的文章就介绍到这了,更多相关 NET6 struct优化内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论