C#通过new实例化的几种方式

前言

在更新Runtime源码发现一个new实例化对象的代码规范.
在c# 9.0新增new实例化对象新方式
文档中新增内容:
Similarly, target-typed `new()` can only be used when the type is explicitly named on the left-hand side, in a variable definition statement or a field definition statement. e.g. `FileStream stream = new(...);`,but not `stream = new(...);` (where the type was specified on a previous line).

上面说的 new ()实例化对象是C#  9.0新增的一种方式.

//第一种实例化对象
FileStream stream = new FileStream("11.txt", FileMode.Create);
//处理
stream.Dispose();

//第二种实例化对象
//在.Net 3.5(官方文档)支持var可推断类型,这个语法糖还是很受大家,当然有有一部分人不喜欢这个语法糖
using (var fileStream = new FileStream("123.txt", FileMode.Create))
{

}


//第三种实例化对象
//在C# 9.0的时候,增加了新的语法
//左侧声明具体类型,右侧new 可以省略具体类型
using (FileStream fileStream1 = new("456.txt", FileMode.Create))
{

}

新增的代码规范主要规范下面这种情况:

List<int> list = new(8);  //左侧有具体类型,右侧可以简化

//如果左侧只是变量,右侧使用简化的new也是没问题的,编译器编译时替换成具体类型,但主要不利于人阅读代码
list = new(16);


秋风 2022-04-04