Add keys/values to Dictionary at declaration

XstreamINsanity picture XstreamINsanity · Sep 22, 2010 · Viewed 59k times · Source

Very easy today, I think. In C#, its:

Dictionary<String, String> dict = new Dictionary<string, string>() { { "", "" } };

But in vb, the following doesn't work.

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) (("",""))

I'm pretty sure there's a way to add them at declaration, but I'm not sure how. And yes, I want to add them at declaration, not any other time. :) So hopefully it's possible. Thanks everyone.

I've also tried:

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) ({"",""})

And...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {("","")}

And...

Public dict As Dictionary(Of String, String) = New Dictionary(Of String, String) {{"",""}}

Answer

Darin Dimitrov picture Darin Dimitrov · Sep 22, 2010

This is possible in VB.NET 10:

Dim dict = New Dictionary(Of Integer, String) From {{ 1, "Test1" }, { 2, "Test1" }}

Unfortunately IIRC VS 2008 uses VB.NET 9 compiler which doesn't support this syntax.

And for those that might be interested here's what happens behind the scenes (C#):

Dictionary<int, string> VB$t_ref$S0 = new Dictionary<int, string>();
VB$t_ref$S0.Add(1, "Test1");
VB$t_ref$S0.Add(2, "Test1");
Dictionary<int, string> dict = VB$t_ref$S0;