2011-02-23 43 views
13

Array.Clear()使用默認值(整數爲零)填充數組,我想用-1填充它。如何快速填充具有特定值的數組?

謝謝。

+2

這個問題有效地問同樣的事情(因爲是什麼具體到C#關於它):[如何使用單個值填充/實例化C#數組?](http://stackoverflow.com/q/1014005/145173) – 2016-02-12 14:26:48

+0

是的,請參閱上面的鏈接(尤其是http: //stackoverflow.com/a/19727083/20 32514),因爲這裏的答案(使用'Enumerable.Repeat'和簡單的'for')不符合「快速」的要求。對於字節數組,請參閱http://stackoverflow.com/a/25808955/2032514 – 0xF 2016-03-18 09:59:22

回答

16

另一種方法是:

int[] arr = Enumerable.Repeat(-1, 10).ToArray(); 
Console.WriteLine(string.Join(",",arr)); 
+0

+1:我比我自己的回答更喜歡它。 – 2011-02-23 14:55:50

+1

這對於必須編寫的代碼量而言是有效的。但我相信這會導致一個簡單的循環。我不明白爲什麼'Buffer'類沒有某種Fill方法。 – 2012-11-18 19:52:18

+3

不僅使用'Enumerable.Repeat'需要迭代.NET級別的每個元素(意味着數組邊界檢查每個訪問),「ToArray」不知道「IEnumerable」的大小,所以必須猜測至於數組大小。這意味着每次超過ToArray的緩衝區時,您都會得到數組分配,並在修剪結束時再添加一個分配。 – 2016-02-12 14:24:36

3

我不知道這樣的方法。你可以自己寫一個,但:

public static void Init<T>(this T[] array, T value) 
{ 
    for(int i=0; i < array.Length; ++i) 
    { 
     array[i] = value; 
    } 
} 

你可以這樣調用:

int[] myArray = new int[5]; 
myArray.Init(-1);