gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:42:29 25 4
gpt4 key购买 nike

有谁知道 C# 编译器在后台使用以下代码做了什么?

dict = new Dictionary<int, string>()
{
{ 1, "value1" },
{ 2, "value2" }
}

不清楚它是创建 KeyValuePair 实例并调用 Add 方法,还是做一些更优化的事情。你们有人知道吗?

最佳答案

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

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

名称 Add 是硬编码的(在 C# 规范中指定:7.5.10.3:集合初始值设定项) .该方法的参数数量没有限制。它只需要匹配方法的参数数量。任何提供 Add 方法的集合(实现 IEnumerable 接口(interface))都可以这样使用。

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

关于c# - 在 C# 上使用数组初始化语法初始化 Dictionary 实例时,幕后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com