如何在实例化时将值插入C#字典?


Answers:


199

这里有整页关于如何执行此操作的页面:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

例:

在下面的代码示例中,a Dictionary<TKey, TValue>使用type的实例初始化StudentName

var students = new Dictionary<int, StudentName>()
{
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};

3
不过,这仅适用于.NET 3.5编译器...请记住这一点。
阿德里安·戈东

@ kd7iwp-没问题,此站点的功能之一是使其他搜索词可以传递到有用的内容。
Daniel Earwicker,2009年

是的,这与微软差不多。多年来,他们一直致力于向后兼容。
PRMan 2014年

46
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
   { 0, "string" }, 
   { 1, "string2" }, 
   { 2, "string3" } };

12

您几乎在那里:

var dict = new Dictionary<int, string>()
{ {0, "string"}, {1,"string2"},{2,"string3"}};

10

您还可以使用Lambda表达式从任何其他IEnumerable对象插入任何“键值”对。键和值可以是您想要的任何类型。

Dictionary<int, string> newDictionary = 
                 SomeList.ToDictionary(k => k.ID, v => v.Name);

我发现这要简单得多,因为您在.NET中到处都使用IEnumerable对象

希望有帮助!!!

塔德


7

您可以实例化字典并向其中添加项目,如下所示:

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

7

请注意,从C#6开始,您现在可以按以下方式对其进行初始化

var students = new Dictionary<int, StudentName>()
{
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211},
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317},
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198}
};

清洁得多:)


-1

希望它能完美运行。

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);


嗨,欢迎来到SO!最初问这个问题的人专门说,他们不想做.Add(int, "string")将值添加到字典的方法。抱歉,这不能解决问题。
Kezz101

-2

通常不建议这样做,但是在不确定的危机时期,您可以使用

Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };

// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
    anotherObjA = (ClassForObjA)jsonMock["object a"];
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.