2016-01-15 15 views
-1

我wan't翻譯從JS到C#的一些代碼,但真的不能想象一個部分......將一些JS到C#

function getHisto(pixels) { 
     var histosize = 1 << (3 * sigbits), 
      histo = new Array(histosize), 
      index, rval, gval, bval; 
     pixels.forEach(function(pixel) { 
      rval = pixel[0] >> rshift; 
      gval = pixel[1] >> rshift; 
      bval = pixel[2] >> rshift; 
      index = getColorIndex(rval, gval, bval); 
      histo[index] = (histo[index] || 0) + 1; 
     }); 
     return histo; 
    } 

究竟有我可以從HISTO []期待?我不明白那一行:

histo[index] = (histo[index] || 0) + 1; 

如果你需要任何額外的信息,我會盡力給它。

編輯1:我特別指histo[index] || 0

+3

什麼讓你感到困惑? 'histo [index] || 0'部分?這只是意味着,「如果histo [index]未定義,則使用零」。 –

+0

對不起,我忘了指定什麼使我困惑。 – chrosey

回答

1

histo[index] = (histo[index] || 0) + 1;

也加入到所述陣列和工作在什麼地方放置它經由current index + 10 + 1

基本上或(||)處理它的第一個被添加到histo的邊緣情況。

1

方括號標記是相同的在C#,它是由索引數組訪問。請參閱this tutorial on MSDN

例如。如果您有這兩個項目的數組:

// javascript 
var x = ["a", "b"]; 

// C# 
var y = string[] {"a", "b"}; 

的第一項是在指數0,第二個是在指數1。然後,您可以使用方括號訪問每個項目:

var first = x[0]; 
var second = x[1];