声明成员变量并初始化,不重复类型

Fas*_*tAl 5 .net c# vb.net

在 C# 中,我可以在方法中执行此操作:

var Content = new Dictionary<string, System.Text.StringBuilder>();
Run Code Online (Sandbox Code Playgroud)

在 VB.Net 中我可以用一种方法来做到这一点:

Dim Content = new Dictionary(of string, System.Text.StringBuilder)
Run Code Online (Sandbox Code Playgroud)

然而,在 VB 中,我也可以在定义字段/成员变量时在方法之外执行此操作(注意,在这种情况下,VB 不会推断类型,而是显式获取类型,这是在“选项推断”之前的 VB.Net 中) ):

Dim Content AS new Dictionary(of string, System.Text.StringBuilder)
Run Code Online (Sandbox Code Playgroud)

在 C# 中,我似乎必须这样做:

Dictionary<string, System.Text.StringBuilder> Content = new Dictionary<string, System.Text.StringBuilder>();
Run Code Online (Sandbox Code Playgroud)

请注意,我必须重复该类型两次。

这是一个简单的例子,对于更复杂的情况,它至少会有点烦人。

我不敢相信 VB 中有更紧凑的东西;我在这里错过了什么吗?如何声明成员变量并初始化而不重复类型?

编辑

来自 Ron 评论中提到的 Eric Lippert 文档:“...如果我们的目标是删除冗余,那么我宁愿以其他方式删除它。使此合法: private static readonly Dictionary NiceNames = new().. .也就是说,在声明中明确地声明类型,然后让“new”运算符根据分配给的类型聪明地找出它正在构造的类型......”
因此,Eric 提出了一个想法他自己讲述了如何做到这一点 - 实际上这就是 VB 所做的一切。(顺便说一下,罗恩,找到该文档非常好)

Net*_*age 3

现在,在 C# 9.0 中,我们有目标类型new表达式来实现 @EricLippert 建议的内容。

Dictionary<string, System.Text.StringBuilder> Content = new();
Run Code Online (Sandbox Code Playgroud)