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

158

有人知道我是否可以在创建C#字典时插入值吗?如果有更高效的方法,我不想每个条目都使用dict.Add(int, "string")

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

8个回答

218

这里有一整个页面介绍如何做到这一点:

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

例子:

在下面的代码示例中,使用StudentName类型的实例初始化了一个Dictionary<TKey, TValue>

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 编译器。 - Adrian Godong
@kd7iwp - 没问题,这个网站的部分功能就是将替代搜索词路由到有用的内容。 - Daniel Earwicker
是的,这在微软公司是一个基本前提。多年来,他们一直致力于向后兼容性。 - PRMan

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

14

你已经接近成功了:

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

11

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

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

我发现在.NET中,你可以随处使用IEnumerable对象,这使得操作更加简单。

希望能对你有所帮助!!!

Tad.


9
只要你知道,自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}
};

更加清洁 :)

7
您可以像这样实例化一个字典并向其中添加项目:
您可以实例化一个字典,然后像这样添加项目:
var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

-1
希望它能完美地工作。

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


你好,欢迎来到SO!最初提出这个问题的人明确表示他们不想使用.Add(int, "string")方法向字典中添加值。很抱歉,这并没有回答问题。 - Kezz

-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"];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接