C# 中没有类型的新功能是啥?

Posted

技术标签:

【中文标题】C# 中没有类型的新功能是啥?【英文标题】:What is new without type in C#?C# 中没有类型的新功能是什么? 【发布时间】:2021-11-24 16:31:34 【问题描述】:

C# 中没有类型的新功能是什么?

我在工作中遇到了如下代码:

throw new("some string goes here");

new("some string goes here") 是在 C# 中创建字符串的一种方式还是其他方式?

【问题讨论】:

devblogs.microsoft.com/dotnet/welcome-to-c-9-0/… 如果可能,您应该与您的团队讨论此功能的使用。 Dictionary<SomeVeryLongName, List<AnotherTooLongName>> _field = new() 很好用。你的例子不是。我们应用的规则是:完整类型应至少出现一次,首选var(根据习惯和与旧代码的一致性)。 【参考方案1】:

throw 的具体情况下,throw new()throw new Exception() 的简写。该功能是在 c# 9 中引入的,您可以在 Target-typed new expressions 中找到文档。

如您所见,有很多地方可以使用它(只要可以推断要创建的类型)来缩短代码。

我最喜欢的地方是字段/属性:

private readonly Dictionary<SomeVeryLongName, List<AnotherTooLongName>> _data = new();

作为补充说明,不鼓励使用throwing Exception,因为它在大多数情况下不够具体,所以我真的不建议使用throw new ("error");。有很多特定的异常可供使用,如果这些都不起作用,请考虑创建自定义异常。

【讨论】:

【参考方案2】:

new() 创建一个类型可以是inferred from context 的对象。

所以而不是:

throw new System.Exception("hi");

您可以改用这个缩写形式:

throw new ("hi");

同样,

var s = new string("hello");

可以替换为:

string s = new("hello");

【讨论】:

以上是关于C# 中没有类型的新功能是啥?的主要内容,如果未能解决你的问题,请参考以下文章

C# 中类型推断的优点和缺点是啥?

在 C# 中 if (condition) then apply function that return same type 的功能等价物是啥?

C# 中类似Java Map功能的语句是啥

C# 和 VB.NET 之间最重要的功能差异是啥?

c# 中的可空类型是啥?

java开发的项目中模块、包、类、接口的关系是啥?