初始化语法:new ViewDataDictionary {{"Name","Value"}}

Mah*_*vcs 25 c# initialization c#-3.0

我正在寻找一种方法将ViewDataDictionary传递给ASP.NET MVC中的部分视图,我来到这个语法:

new ViewDataDictionary { { "Name", "Value" } }
Run Code Online (Sandbox Code Playgroud)

我对这里的初始化语法有点困惑.任何人都可以向我解释一下吗?

Oli*_*ver 49

ViewDataDictionary实施IDictionary<string, object>.

IDictionary<string, object>本质上是一个集合KeyValuePair<string, object>.

您的ViewDataDictionary初始化程序(外部花括号)包含另一组花括号,表示KeyValuePair<string, object>初始化程序.

这个答案中解释了是可能的原因.

您可以通过逗号分隔Add初始值设定项添加多个项目:

var data = new ViewDataDictionary 
{ 
    { "Name", "Value" }, 
    { "Name2", "Value2" } 
};
Run Code Online (Sandbox Code Playgroud)

与...一样:

var data = new ViewDataDictionary 
{ 
    new KeyValuePair<string, object>("Name", "Value"), 
    new KeyValuePair<string, object>("Name2", "Value2") 
};
Run Code Online (Sandbox Code Playgroud)

本质上,内部花括号是初始化KeyValuePair<string, object>对象的很好的语法.