可能的重复:
自定义集合初始化器 https://stackoverflow.com/questions/2495791/custom-collection-initializers
我有一个简单的 Pair 类:
public class Pair<T1, T2>
{
public Pair(T1 value1, T2 value2)
{
Value1 = value1;
Value2 = value2;
}
public T1 Value1 { get; set; }
public T2 Value2 { get; set; }
}
并且希望能够像 Dictionary 对象一样定义它,全部内联,如下所示:
var temp = new Pair<int, string>[]
{
{0, "bob"},
{1, "phil"},
{0, "nick"}
};
但它要求我定义一个全新的 Pair(0, "bob") 等,我将如何实现这个?
像往常一样,谢谢大家!
要使自定义初始化像字典一样工作,您需要支持两件事。你的类型需要实现IEnumerable
并有一个合适的Add
方法。您正在初始化一个Array
,其中没有Add
方法。例如
class PairList<T1, T2> : IEnumerable
{
private List<Pair<T1, T2>> _list = new List<Pair<T1, T2>>();
public void Add(T1 arg1, T2 arg2)
{
_list.Add(new Pair<T1, T2>(arg1, arg2));
}
IEnumerator IEnumerable.GetEnumerator()
{
return _list.GetEnumerator();
}
}
然后你可以做
var temp = new PairList<int, string>
{
{0, "bob"},
{1, "phil"},
{0, "nick"}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)