Hos*_*Aly 11 .net c# enumeration struct-vs-class
我注意到List<T>它将枚举器定义为a struct,同时ArrayList将其枚举器定义为class.有什么不同?如果我要为我的班级写一个调查员,哪一个更好?
编辑:我的要求无法使用yield,所以我正在实现我自己的枚举器.也就是说,我想知道是否更好地遵循这些方法List<T>并将其作为结构实现.
在C#中编写枚举器的最简单方法是使用"yield return"模式.例如.
public IEnumerator<int> Example() {
yield return 1;
yield return 2;
}
Run Code Online (Sandbox Code Playgroud)
此模式将生成引擎盖下的所有枚举器代码.这取决于您的决定.
Reason List使用struct枚举器来防止在foreach语句中生成垃圾.这是非常好的理由,特别是如果您正在为Compact Framework编程,因为CF没有分代GC,CF通常用在低性能硬件上,很快就会导致性能问题.
此外,我不认为可变结构是一些发布的示例中的问题的根源,但是程序员对价值类型的工作原理并不了解.
用它来写yield return.
至于为什么你可能会在其中选择,class或者struct,如果你把它struct作为一个,那么一旦它作为一个界面返回它就会被装箱,所以使它成为一个struct正好导致进行额外的复制.看不出那一点!
| 归档时间: |
|
| 查看次数: |
5698 次 |
| 最近记录: |