n_enrai49 Asked:2022-01-03 03:19:43 +0800 CST2022-01-03 03:19:43 +0800 CST 2022-01-03 03:19:43 +0800 CST 声明自己的 C# 集合时如何实现初始化 772 是否可以在声明时初始化您自己的集合,如内置List<T>,即像这样: MyCollection<int> mcl = new MyCollection<int>() { 1, 2, 3, 4 }; c# 1 个回答 Voted Best Answer VladD 2022-01-03T03:27:44+08:002022-01-03T03:27:44+08:00 为了使初始化语法与您的集合一起使用,必须满足以下条件:集合类必须实现接口IEnumerable(或IEnumerable<T>继承自IEnumerable),并定义可访问方法Add(顺便说一下,它可以是扩展方法),它将为初始化列表中的每个元素调用。 代码MyCollection mcl = new MyCollection() {1,2,3,4};将编译为: MyCollection tmp = new MyCollection(); // реальное имя будет недоступно tmp.Add(1); tmp.Add(2); tmp.Add(3); tmp.Add(4); MyCollection mcl = tmp; 证明 该接口IEnumerable将不会被使用,只需要随机访问的方法Add不会导致初始化语法的可用性,该语法仅对集合有意义。 为什么要使用临时变量?事实是初始化列表代码可以直接或间接使用它mcl(例如,如果mcl它是一个类字段或先前声明的变量的情况),很明显代码不应该访问未构建的权限任务的一边。
为了使初始化语法与您的集合一起使用,必须满足以下条件:集合类必须实现接口
IEnumerable
(或IEnumerable<T>
继承自IEnumerable
),并定义可访问方法Add
(顺便说一下,它可以是扩展方法),它将为初始化列表中的每个元素调用。代码
MyCollection mcl = new MyCollection() {1,2,3,4};
将编译为:证明
该接口
IEnumerable
将不会被使用,只需要随机访问的方法Add
不会导致初始化语法的可用性,该语法仅对集合有意义。为什么要使用临时变量?事实是初始化列表代码可以直接或间接使用它
mcl
(例如,如果mcl
它是一个类字段或先前声明的变量的情况),很明显代码不应该访问未构建的权限任务的一边。