2012-10-12 540 views

回答

4
for(int i = 0; i < constraintValue.Length; i++) 
    constraintValue[i] = -1; 
+0

「計數」用於收藏。用陣列的長度替換 –

+2

我使用了 –

+0

這個問題的長度值嗯,這似乎是直觀的...我只是希望c#可能有一些syntally糖,但它似乎並不是。 – william007

1

你可以用

for(int i =0; i < constraintValue.Length; i ++) 
{ 
constraintValue[i] = -1; 
} 
0

試不知道,如果你把這個「易」:

double[] constraintValue = new double[]{ -1, -1, 
             ... (UnUsedServices.Count times)}; 

和當然,要做到這一點的標準方法是循環在每個陣列項目上進行初始化:

for(int i = 0; i < constraintValue.Length; i++) 
{ 
    constraintValue[i] = -1; 
} 
0
for (int i = 0; i < constraintValue.Length; i++) 
    constraintValue[i] = -1; 
2
double[] constraintValue = Enumerable.Repeat(-1D, UnUsedServices.Count).ToArray(); 
5
double[] constraintValue = Enumerable.Repeat<double>(-1d,UnUsedServices.Count).ToArray(); 
0
int[] initilize_array = newint[10]; 

    for (int i = 0; i <initilize_array.Length; i++) 

    { 

    initilize_array[i] = -1; 

    } 

這是最簡單的方式

2

確切的回答你的問題是:

for(var i =0; i < constraintValue.Length; i ++) 
{ 
    constraintValue[i] = -1; 
} 

但是,如果你想擁有 「未設置」 值,爲什麼你不使用Nullable<double>

double?[] constraintValue = new double?[UnUsedServices.Count]; 

constraintValue[10] = 42D; 
constraintValue[20] = 0D; 

var x1 = contraintValue[10].HasValue; // true 
var x1val = contraintValue[10].Value; // 42D 

var x2 = contraintValue[20].HasValue; // true 
var x2val = contraintValue[20].Value; // 0D 

var x3 = contraintValue[10].HasValue; // false 
//var x3val = contraintValue[10].Value; // exception 
+0

謝謝,在這裏學到了新東西。 – william007

0

如果需要更快的性能,然後Enumerable.Repeat做的TPL並行使用:使用了for循環

double[] constraintValue = new double[UnUsedServices.Count]; 
Parallel.For(0, UnUsedServices.Count, index => constraintValue[index] = -1); 
+1

Parallism好! – william007

+1

不,不在這裏。基準測試,你會看到一個很大的性能下降。爲什麼?因爲並行工作太小而且便宜。如果您添加並行性,您的應用程序將不得不使用線程,上下文切換,鎖等工作。此結構性成本比益處要大得多。 –

+0

並添加到史蒂夫的評論,你也摧毀了內存本地化。訪問順序存儲器位置要比對存儲器進行「隨機」訪問要快得多,這是對其進行並行處理的結果。 – Servy