定义字典之间的差异
本文关键字:之间 字典 定义 | 更新日期: 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节对此进行了说明
对象创建表达式可以省略构造函数参数列表和括号,前提是它包含对象初始化器或集合初始化器。省略构造函数参数列表并用括号括起来相当于指定一个空参数列表。
没有。使用初始值设定项语法时,可以省略括号。这相当于调用无参数构造函数。它们在编译时将产生完全相同的字节码。
这里没有区别,第一个只是第二个的语法糖。
经过编译器处理后,输出的代码是相同的。