CS5L11——CSharp 9 功能和语法
CS5L11——CSharp 9 功能和语法
目标类型化 new
在已知变量类型的情况下,使用 new
实例化对象时可以直接省略掉 new
关键字后面的类型,使变量的赋值语句变得更简单
相比 var,它可以不仅可以用于临时变量初始化时,还可以用于类的成员变量以及对变量的重新赋值的情况
实际上,new()
在所有可以推导出类型的上下文中,都可以使用,包括在初始化器内部,只要能够确定赋值类型是什么
1 | class Test {} |
不适用此特性的场景包括:
-
该方法不适用于里氏替换,也就是父类装子类的情况,
new
的子类必须显式指定,否则会出现歧义! -
使用
as
操作时无法正确推导,以int
为例1
Console.Write(new() as int); // error: "new()" 没有目标类型
-
使用
var
时也无法推导1
var x = new(); // error: "new()" 没有目标类型
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!