将此C#字典转换为VB.NET

vam*_*nka 1 c# vb.net code-conversion

如何将以下C#代码转换为VB.NET?

转换工具做得不好.

private static readonly Dictionary<string, List<string>> ValidHtmlTags = new Dictionary<string, List<string>> {
    { "param", new List<string>() {"name","value"}},
    { "object", new List<string>() {"id","type"}},
    { "embed", new List<string>() {"src","type","wmode"}}
};
Run Code Online (Sandbox Code Playgroud)

Eil*_*lon 10

我相信答案是VB.NET 3.5不支持集合初始化语法.

.NET 4中的VB.NET确实支持集合初始化程序,如下所示:

Dim days = New Dictionary(Of Integer, String) From
    {{0, "Sunday"}, {1, "Monday"}}
Run Code Online (Sandbox Code Playgroud)

前面的代码示例等效于以下代码.

Dim days = New Dictionary(Of Integer, String)
days.Add(0, "Sunday")
days.Add(1, "Monday")
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 6

你想要这样的东西(对于.NET 3.5):

Shared Sub New()
    Dim dict As New Dictionary(Of String, List(Of String))
    Dim l1 As New List(Of String)
    l1.Add("name")
    l1.Add("value")
    dict.Add("param", l1)
    Dim l2 As New List(Of String)
    l2.Add("id")
    l2.Add("type")
    dict.Add("object", l2)
    Dim l3 As New List(Of String)
    l3.Add("src")
    l3.Add("type")
    l3.Add("wmode")
    dict.Add("embed", l3)
    MyClass.ValidHtmlTags = dict
End Sub

Private Shared ReadOnly ValidHtmlTags As Dictionary(Of String, List(Of String))
Run Code Online (Sandbox Code Playgroud)