c# - 在 C# 中声明集合

标签 c# collections

我的问题是:对于大型数据集,什么是最有效和最正确的?

 _pointBuffer1 = new Point3DCollection {  
            new Point3D(140.961, 142.064, 109.300), new Point3D(142.728, 255.678, (...)

-- 或--

_pointBuffer1.Add(new Point3D(140.961, 142.064, 109.300)); _poitBuffer1.Add(142.728, (...)

还是一样?

Point3D 被声明为 Point3DCollection,但我的问题是针对任何对象集合(例如可以是 Int32)..

最佳答案

为了清晰起见,我强烈建议使用集合初始值设定项(尽管我也会使用一些换行符)。

请注意,它们完全最终不是同一个 IL。第一个最终等同于:

var tmp = new Point3DCollection();
tmp.Add(new Point3D(140.961, 142.064, 109.300));
tmp.Add(new Point3D(142.728, 255.678));
...
_pointBuffer1 = tmp;

换句话说,对最终变量的赋值仅在 所有 Add 调用之后进行。

如果您的 Point3D 构造函数以某种方式引用了 _pointBuffer1,这很重要!

关于c# - 在 C# 中声明集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1927489/

相关文章:

c# - 对静态集合的线程安全访问

java - Java中使用Comparator对ArrayList进行排序

c# - ASP.NET中从connectionStrings中动态读取configSource的值

c# - 随机字符串生成 - 一个接一个生成的两个字符串给出相同的结果

c# - ienumerable <string> 到字典 <string, int>

c# - 如何在内存中创建一个文件,然后通过asp.net mvc + jquery将该文件发送给用户?

java - Java 中的 CollectionUtils 使用谓词

c# - SvcUtil.exe 生成多个wsdl文件

java - 代码可以在eclipse中运行,但不能在javac中运行

java - 如何仅将 1 个元素传递给 ArrayAdapter 并确保它只显示唯一的项目