是否存在与C#6 Indexer Initializer构造等效的VB.NET?
var placesByZip = new Dictionary<string, string>
{
["63368"] = "Dardenne Prairie",
["63141"] = "Des Peres",
["63101"] = "St. Louis"
};
-编辑-
更准确地说,我正在寻找Indexer Initializer(这是一个对象初始化器),而不是集合初始化器。
有关差异的更多信息,可以在此blog entry的结尾处找到。
-编辑2:
在提到的博客中,解决方案应允许这样做:
再次,我想重申一下,Indexer Initializer不是一种类型 是集合初始化程序的一种,它是一种对象初始化程序。为什么 我一直在说吗?为什么这种区别很重要?因为你 无法将对象初始值设定项和集合初始值设定项混在一起 初始化列表。
因此,我们无法初始化集合并在同一集合中设置属性 初始化列表,但我们可以在其中设置属性,字段和索引器 相同的初始化列表,因为它们都是有效的对象 初始化程序。
答案 0 :(得分:2)
Visual Basic中没有这样的功能。
https://docs.microsoft.com/en-us/dotnet/visual-basic/getting-started/whats-new
答案 1 :(得分:0)
应该是
Dim placesByZip as New Dictionary(Of String, String) From {
{"63368", "Dardenne Prairie"},
{"63141", "Des Peres"},
{"63101", "St. Louis"}
}
(从未尝试过)
答案 2 :(得分:0)
是
Dim placesByZip As New Dictionary(Of String, String) From {
{"63368", "Dardenne Prairie"},
{"63141", "Des Peres"},
{"63101", "St. Louis"}}
答案 3 :(得分:0)
自2019年6月27日起,VB.NET版本15.8(VS 2017),未根据Microsoft documentation on object initializers授权来自索引成员的对象初始化。
正在初始化的类成员不能被索引或限定
出于完整性考虑,collection initializers documentation中也没有提及。