gpt4 book ai didi

c# - C# 3.5 中的 List 初始化

转载 作者:可可西里 更新时间:2023-11-01 07:43:23 25 4
gpt4 key购买 nike

我可以初始化一个 List<int> like new List<int>{1,2,3,4,5};然而List<T>没有接受单个参数的构造函数。所以我试图通过调试器运行它,它似乎在调用 Add 方法。那么编译器如何知道调用哪个方法来添加每个单独的元素。

这可能是个愚蠢的问题,但我有点困惑。

谢谢

最佳答案

这是一个集合初始化器,一个 C# 3.0 language feature .它需要:

  • 该类型必须实现 IEnumerable(尽管它从未用于初始化)
  • 类型必须至少有一个Add方法

它只是为每个术语调用Add 方法。如果 Add 接受多个值,例如字典,您也可以使用元组。然后每一项都是{key,value}:

new Dictionary<int,string> {{1,"abc"},{2,"def"}};

有关将其用于定制类型的示例:

class Program
{
static void Main()
{
new Foo { 1, "abc", { 2, "def" } };
}
}

class Foo : IEnumerable
{
public void Add(int a) { }
public void Add(string b) { }
public void Add(int a, string b) { }
// must implement this!! (but never called)
IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); }
}

关于c# - C# 3.5 中的 List<int> 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2927578/

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