定义字典之间的差异

本文关键字:之间 字典 定义 | 更新日期: 2023-09-27 18:25:37

我正在使用C#(5.0).Net(4.5)开发应用程序。我想知道下面对dictionary变量的声明有什么区别。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>之后使用了()。这两种语法都很好用,但只是急于了解内部工作。

定义字典之间的差异

这两种语法是等价的。当从初始值设定项表达式中省略构造函数调用时,编译器将尝试绑定到该类型的无参数构造函数。C规范第7.5.10.1节对此进行了说明

对象创建表达式可以省略构造函数参数列表和括号,前提是它包含对象初始化器或集合初始化器。省略构造函数参数列表并用括号括起来相当于指定一个空参数列表。

没有。使用初始值设定项语法时,可以省略括号。这相当于调用无参数构造函数。它们在编译时将产生完全相同的字节码。

这里没有区别,第一个只是第二个的语法糖。

经过编译器处理后,输出的代码是相同的。