C# 最有效的数组方式。使用“调整大小”以外的内容;0“;作为默认值?

C# 最有效的数组方式。使用“调整大小”以外的内容;0“;作为默认值?,c#,arrays,memory-management,floating-point,resize,C#,Arrays,Memory Management,Floating Point,Resize,我想调整数组的大小,但是我不希望所有附加值都为零 Array.Resize(ref range, range.Length + grow); 如果您假定附加的长度始终是4字节的倍数(刚好足以容纳一个浮点),那么用float.MaxValue或float.MinValue填充该长度的最佳方法是什么?只需循环添加的项并将值分配给它即可。编译器将生成代码,仅在循环外部执行数组索引的范围检查,因此循环将非常有效 int oldSize = range.Length; Array.Resize(ref

我想调整数组的大小,但是我不希望所有附加值都为零

Array.Resize(ref range, range.Length + grow);

如果您假定附加的长度始终是4字节的倍数(刚好足以容纳一个浮点),那么用
float.MaxValue
float.MinValue
填充该长度的最佳方法是什么?

只需循环添加的项并将值分配给它即可。编译器将生成代码,仅在循环外部执行数组索引的范围检查,因此循环将非常有效

int oldSize = range.Length;
Array.Resize(ref range, range.Length + grow);
for (int i = oldSize; i < range.Length; i++) {
  range[i] = float.MinValue;
}
int oldSize=range.Length;
调整数组大小(参考范围、范围、长度+增长);
for(int i=oldSize;i

您应该知道,
Array.Resize
实际上并没有调整数组的大小,但它会创建一个具有所需大小的新数组,并从原始数组复制数据。因此,如果您想要一种有效调整集合大小的方法,那么根本不应该使用数组。根据您的需要,列表、数组列表或链接列表可能会更好。

只需在添加的项目中循环并为其赋值即可。编译器将生成代码,仅在循环外部执行数组索引的范围检查,因此循环将非常有效

int oldSize = range.Length;
Array.Resize(ref range, range.Length + grow);
for (int i = oldSize; i < range.Length; i++) {
  range[i] = float.MinValue;
}
int oldSize=range.Length;
调整数组大小(参考范围、范围、长度+增长);
for(int i=oldSize;i

您应该知道,
Array.Resize
实际上并没有调整数组的大小,但它会创建一个具有所需大小的新数组,并从原始数组复制数据。因此,如果您想要一种有效调整集合大小的方法,那么根本不应该使用数组。根据您的需要,列表、数组列表或链接列表可能会更好。

循环是正确的方法。您总是可以开始对底层字节进行固定内存访问,但您真的需要吗?您知道在该循环中我将使用哪些函数吗?只要一个指针就足够让我开始了。循环是正确的方法。您总是可以开始对底层字节进行固定内存访问,但您真的需要吗?您知道在该循环中我将使用哪些函数吗?仅仅一个指针就足以让我开始..列表使用数组作为后备存储。在调整列表大小的特定条件下,列表中存在数组复制。列表使用数组作为备份存储。在调整列表大小时,在某些条件下会在列表中复制数组。