C#自定义集合初始化器

集合类(比如ArrayList,List<T>)的初始化跟正常类型比起来,可以多出来一个花括号包起来的小尾巴,称为“集合初始化器”,举个栗子:

List<int> list = new List<int>() { 1, 2, 3, 4, 5 };
下面介绍如何在自定义类里也实现这个功能。该类需要两个条件:

1. 继承接口 IEnumerable

2. 实现公共方法 Add(...)

再次举栗子:

class Roster : IEnumerable
{
	public List<string> names = new List<string>();

	public IEnumerator GetEnumerator()
	{
		return null;
	}

	public void Add(string name)
	{
		names.Add(name);
	}
}
...
Roster roster = new Roster() { "Tom", "Jerry" };
等价于
Roster roster = new Roster();
roster.Add("Tom");
roster.Add("Jerry");

这个例子里的 GetEnumerator() 方法是空的,不过并不影响我们正常使用集合初始化器。


猜你喜欢

转载自blog.csdn.net/lzdidiv/article/details/71566173