2013-01-08 33 views
14

可能重複:
How do I quicky fill an array with a specific value?初始化具有單個值的整數數組

有一種方法與一個單一的值等不-1初始化整數數組必須明確分配每個項目?

基本上,如果我有

int[] MyIntArray = new int[SomeCount]; 

所有項目都默認分配0。有沒有辦法將該值更改爲-1而不使用循環?或使用{}明確分配每個項目?

+4

值並且檢查這個http://stackoverflow.com/questions/13980570/how-to-intialize-integer-array-in -c-sharp /討論如何高效地實現它。http://stackoverflow.com/questions/10519275/high-memory-consumption-with-enumerable-range如何不使用ToArray來處理大型數組。 –

回答

37
int[] myIntArray = Enumerable.Repeat(-1, 20).ToArray(); 
+3

不要忘記所有ToArray的'.ToArray()' – mlorbetske

+4

+1。如果數組很大,請閱讀[使用Enumerable.Range高內存消耗](http://stackoverflow.com/questions/10519275/high-memory-consumption-with-enumerable-range)。 –

+0

對於除int以外的其他類型,請使用模板表單,例如。 Enumerable.Repeat (1,20).ToArray(); – dlchambers

11

如果你有一個值(或少數幾個),你可以明確地使用collection initializer

int[] MyIntArray = new int[] { -1 }; 

如果你有很多設置它們,你可以使用Enumerable.Repeat這樣

int[] MyIntArray = Enumerable.Repeat(-1, YourArraySize).ToArray(); 
+1

把一些大小放在新的int [Size]中,這個語句不起作用。即使你把一個像靜態大小50. 所以,我不認爲這是正確的答案。 –

+1

@FarhanHafeez你絕對正確,我原本誤讀了這個問題,立即去編輯我的答案,我的歉意 – mlorbetske

15

你可以使用Enumerable.Repeat方法

int[] myIntArray = Enumerable.Repeat(1234, 1000).ToArray() 

將創建1000個元素的陣列,所有具有1234

+1

只有答案很清楚。 – ozgur