定义字典之间的区别

时间:2013-07-30 06:34:49

标签: c# .net

我正在使用C#(5.0).Net(4.5)开发应用程序。 我想知道下面与字典变量声明之间的区别。 1。

var emailtemplateValues = new Dictionary<string, object>
    {
        {"CreatorName", creatorUserInfo.UserName},
        {"ProjectName", masterProjectInfo.Title},
        {"Reason",  reason}
    };

和 2。

var emailtemplateValues = new Dictionary<string, object>()
    {
        {"CreatorName", creatorUserInfo.UserName},
        {"ProjectName", masterProjectInfo.Title},
        {"Reason",  reason}
    };

在第二个声明中,我在()之后使用了Dictionary<string, object>。 这两种语法都很好,但只是渴望了解内部工作。

4 个答案:

答案 0 :(得分:9)

这两种语法是等价的。当初始化表达式中省略构造函数调用时,编译器将尝试绑定到该类型的无参数构造函数。这将在C#规范

的7.5.10.1节中介绍
  

对象创建表达式可以省略构造函数参数列表并括起括号,前提是它包含对象初始值设定项或集合初始值设定项。省略构造函数参数列表并括起括号等同于指定空参数列表。

答案 1 :(得分:5)

<强>没有即可。使用初始化程序语法时,可以省略括号。这相当于调用无参数构造函数。它们在编译时会产生完全相同的字节码。

答案 2 :(得分:5)

这里没有区别,第一个只是第二个syntactic sugar

答案 3 :(得分:1)

编译器处理后输出是相同的代码没有区别。