相关疑难解决方法(0)

在C#.NET中使用单个值初始化整数数组

可能重复:
如何使用特定值快速填充数组?

有没有办法初始化一个单值如-1的整数数组而不必显式分配每个项目?

基本上,如果我有

int[] MyIntArray = new int[SomeCount];
Run Code Online (Sandbox Code Playgroud)

默认情况下,所有项目都分配为0.有没有办法在不使用循环的情况下将该值更改为-1?或使用{}明确指定每个项目?

.net c#

19
推荐指数
3
解决办法
4万
查看次数

使用Enumerable.Range消耗大量内存?

本来我想知道是否ToList比使用的构造函数分配的内存List<T>这需要一个IEnumerable<T>(没有区别).

出于测试目的,我曾经Enumerable.Range创建了一个源数组,我可以用它来创建List<int>via 1. ToList和2. constructor的实例.两者都在创建副本.

这就是我注意到以下内存消耗的巨大差异:

  1. Enumerable.Range(1, 10000000) 要么
  2. Enumerable.Range(1, 10000000).ToArray()

当我使用第一个并调用ToList生成的对象时,内存比数组(38,26MB/64MB)大约多60%.

问:推理错误的原因是什么?

var memoryBefore = GC.GetTotalMemory(true);
var range = Enumerable.Range(1, 10000000);
var rangeMem = GC.GetTotalMemory(true) - memoryBefore; // negligible
var list = range.ToList();
var memoryList = GC.GetTotalMemory(true) - memoryBefore - rangeMem;

String memInfoEnumerable = String.Format("Memory before: {0:N2} MB List: {1:N2} MB"
    , (memoryBefore / 1024f) / 1024f
    , (memoryList   / 1024f) / 1024f);
// …
Run Code Online (Sandbox Code Playgroud)

.net c# linq memory-management

7
推荐指数
1
解决办法
1484
查看次数

c#Leaner初始化int数组的方法

拥有以下代码是否有更简洁的方法将数组从1初始化为由变量指定的数字?

int nums=5;
int[] array= new int[nums];

for(int i=0;i<num;i++)
{
   array[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

也许用linq或一些array.function?

.net c# linq arrays initialization

3
推荐指数
1
解决办法
787
查看次数

标签 统计

.net ×3

c# ×3

linq ×2

arrays ×1

initialization ×1

memory-management ×1