C# 中没有类型的新功能是什么?
What is new without type in C#?
C# 中没有类型的新功能是什么?
我在工作中遇到了以下代码:
throw new("some string goes here");
new("some string goes here")
是一种在 C# 中创建字符串的方法还是其他方法?
new()
创建的对象类型可以是 inferred from context。
所以代替:
throw new System.Exception("hi");
您可以改用这个缩写形式:
throw new ("hi");
同样,
var s = new string("hello");
可以替换为:
string s = new("hello");
在 throw
的特定情况下,throw new()
是 throw new Exception()
的 shorthand。该功能是在 c# 9 中引入的,您可以找到文档 Target-typed new expressions.
如您所见,有很多地方可以使用它(只要可以推断要创建的类型)来缩短代码。
我最喜欢的地方是fields/properties:
private readonly Dictionary<SomeVeryLongName, List<AnotherTooLongName>> _data = new();
作为补充说明,不鼓励 throw
ing Exception
,因为它对于大多数情况来说不够具体,所以我真的不建议这样做 throw new ("error");
。有很多特定的例外可以使用,如果 none 可行,请考虑创建自定义例外。
C# 中没有类型的新功能是什么?
我在工作中遇到了以下代码:
throw new("some string goes here");
new("some string goes here")
是一种在 C# 中创建字符串的方法还是其他方法?
new()
创建的对象类型可以是 inferred from context。
所以代替:
throw new System.Exception("hi");
您可以改用这个缩写形式:
throw new ("hi");
同样,
var s = new string("hello");
可以替换为:
string s = new("hello");
在 throw
的特定情况下,throw new()
是 throw new Exception()
的 shorthand。该功能是在 c# 9 中引入的,您可以找到文档 Target-typed new expressions.
如您所见,有很多地方可以使用它(只要可以推断要创建的类型)来缩短代码。
我最喜欢的地方是fields/properties:
private readonly Dictionary<SomeVeryLongName, List<AnotherTooLongName>> _data = new();
作为补充说明,不鼓励 throw
ing Exception
,因为它对于大多数情况来说不够具体,所以我真的不建议这样做 throw new ("error");
。有很多特定的例外可以使用,如果 none 可行,请考虑创建自定义例外。