我正在使用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>
。
这两种语法都很好,但只是渴望了解内部工作。
答案 0 :(得分:9)
这两种语法是等价的。当初始化表达式中省略构造函数调用时,编译器将尝试绑定到该类型的无参数构造函数。这将在C#规范
的7.5.10.1节中介绍对象创建表达式可以省略构造函数参数列表并括起括号,前提是它包含对象初始值设定项或集合初始值设定项。省略构造函数参数列表并括起括号等同于指定空参数列表。
答案 1 :(得分:5)
<强>没有即可。使用初始化程序语法时,可以省略括号。这相当于调用无参数构造函数。它们在编译时会产生完全相同的字节码。
答案 2 :(得分:5)
这里没有区别,第一个只是第二个syntactic sugar。
答案 3 :(得分:1)
编译器处理后输出是相同的代码没有区别。