Csharp/C#教程:使用数组初始化语法在C#上初始化Dictionary实例时会发生什么?分享


使用数组初始化语法在C#上初始化Dictionary实例时会发生什么?

有没有人知道C#编译器使用以下代码做什么?

dict = new Dictionary() { { 1, "value1" }, { 2, "value2" } } 

它是否创建KeyValuePair实例并调用Add方法或执行更优化的操作尚不清楚。 你们有谁都知道吗?

它将使用值作为参数调用对象上的Add方法:

 var __temp = new Dictionary(); __temp.Add(1, "value1"); __temp.Add(2, "value2"); dict = __temp; 

名称Add是硬编码的(在C#规范中指定: 7.5.10.3 :Collection初始化程序)。 该方法的参数数量不受限制。 它只需匹配方法的参数数量。 任何提供Add方法的集合(实现IEnumerable接口)都可以这样使用。

为了进一步澄清,不,编译器并不真正关心该类是用于创建KeyValuePairDictionary ,并将其传递给Add 。 它只是生成一个对Add方法的调用序列,传递每个调用中每个集合项中的所有参数。 Add方法负责其余部分。

上述就是C#学习教程:使用数组初始化语法在C#上初始化Dictionary实例时会发生什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1024813.html

(0)
上一篇 2022年1月8日
下一篇 2022年1月8日

精彩推荐