在C#中我可以用一种方法来做到这一点:
var Content = new Dictionary<string, System.Text.StringBuilder>();
在VB.Net中,我可以用一种方法做到这一点:
Dim Content = new Dictionary(of string, System.Text.StringBuilder)
然而在VB中我还可以在定义字段/成员变量时在方法之外执行此操作(注意,在这种情况下,VB不会推断类型,它是明确地获取它,这是在VB.Net之前'选项推断'):
Dim Content AS new Dictionary(of string, System.Text.StringBuilder)
在C#中,似乎我必须这样做:
Dictionary<string, System.Text.StringBuilder> Content = new Dictionary<string, System.Text.StringBuilder>();
注意我必须重复两次类型。
这是一个简单的例子,对于更复杂的情况,它确实至少有点烦人。
我无法相信VB中的某些东西更紧凑;我在这里错过了什么吗?如何声明成员变量并初始化而不重复类型?
来自Ron评论中提到的Eric Lippert文档:“... 如果我们的目标是删除冗余,我宁愿以其他方式删除它。使这个合法:private static readonly Dictionary niceNames = new()...也就是说,在声明中明确说明类型,然后让“new”操作符聪明地根据它被分配给的类型来确定它正在构造什么类型。 “
所以有一个想法由Eric自己提出如何做到 - 这真的是VB所做的一切。 (顺便说一句,很好地找到那份文件)
答案 0 :(得分:2)
您不能不重复该类型,但如果类型很复杂,您可以使用别名(使用“using”语句创建)。
答案 1 :(得分:1)
现在,在C#9.0中,我们已经使用目标类型的new
表达式来实现@EricLippert的建议。
Dictionary<string, System.Text.StringBuilder> Content = new();