C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 在字典初始值设定项中使用方括号和花括号之间有区别吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_674_0@
@H_674_0@
在字典初始值设定项中,有两种方法可以使用内容创建字典:

new Dictionary<String,GradientSpace>
{
    ["userSpaceOnUse"] = GradientSpace.Absolute,["objectBoundingBox"] = GradientSpace.Relative
})

new Dictionary<String,GradientSpace>
{
    {"userSpaceOnUse",GradientSpace.AbsolutE},{"objectBoundingBox",GradientSpace.RelativE}
});

在这两种语法中是否存在任何差异,或者仅仅是偏好问题?

解决方法

当源代码如下并且目标框架是.NET 4.7.1时:

var x = new Dictionary<String,int>
{
    ["userSpaceOnUse"] = 1,["objectBoundingBox"] = 3
};

var y = new Dictionary<String,int> {
    {"userSpaceOnUse",1},3}
};

这导致以下中间语言(使用jetBrains dotPeek):

// [18 13 - 22 15]
IL_0001: newobj       instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,int32>::.ctor()
IL_0006: dup          
IL_0007: ldstr        "userSpaceOnUse"
IL_000c: ldc.i4.1     
IL_000d: callvirt     instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,int32>::set_Item(!0/*String*/,!1/*int32*/)
IL_0012: nop          
IL_0013: dup          
IL_0014: ldstr        "objectBoundingBox"
IL_0019: ldc.i4.3     
IL_001a: callvirt     instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,!1/*int32*/)
IL_001f: nop          
IL_0020: stloc.0      // x

// [25 13 - 28 15]
IL_0021: newobj       instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,int32>::.ctor()
IL_0026: dup          
IL_0027: ldstr        "userSpaceOnUse"
IL_002c: ldc.i4.1     
IL_002d: callvirt     instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,int32>::Add(!0/*String*/,!1/*int32*/)
IL_0032: nop          
IL_0033: dup          
IL_0034: ldstr        "objectBoundingBox"
IL_0039: ldc.i4.3     
IL_003a: callvirt     instance void class [mscorlib]System.Collections.Generic.Dictionary`2<String,!1/*int32*/)
IL_003f: nop          
IL_0040: stloc.1      // y

第一种方法导致设置索引器/属性,而第二种方式使用Add()方法,这意味着它们的翻译方式不同.

在这种情况下,Dictionarry类的.NET Core源也很有趣:
https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/collections/generic/dictionary.cs

@H_674_0@

大佬总结

以上是大佬教程为你收集整理的c# – 在字典初始值设定项中使用方括号和花括号之间有区别吗?全部内容,希望文章能够帮你解决c# – 在字典初始值设定项中使用方括号和花括号之间有区别吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:c#之间使用初始字典定项方括号有区别花括号
猜你在找的C#相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap