[英]C#, "?" and ":" operators
我沒有為我的問題找到任何解決方案,所以我問,如何?
和:
當我有多個聲明時,操作符有效?
我想要做什么,我在中間pixel[pos]
和周圍像素上有像素,它看起來像:
0 0 0
0 x 0
0 0 0
x
是中心像素。
我正在檢查,如果我周圍有任何白色( zero
)像素。 如果有人,我將像素標記為two
。 如果沒有,那么模式看起來像:
1 1 1
1 x 1
1 1 1
1
是一個黑色像素,我將其設置為one
。
現在,代碼:
if(pixels[positionOfPixel] == one && x > 0 && x < width
&& y > 0 && y < height)
{
pixels[positionOfPixel] = pixels[positionOfPixel - 1] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel + 1] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel - offset] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel + offset] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel - offset + 1] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel + offset - 1] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel - offset - 1] == zero ? two :
pixels[positionOfPixel] = pixels[positionOfPixel - offset + 1] == zero ? two : zero;
}
我的問題是,為什么每one
像素標記為two
? 為什么它不識別像素,其中每個像素都是one
(如第二個模式)?
感謝您的任何建議!
我不是 C# 專家,但有一個共同的規則如何? : 可以使用運算符。
x = (boolean condition) ? reult_if_true : result_if_false;
例如
drink = isThisPersonAGirl ? wine : beer;
如果要使用許多條件與 ? : 運營商,你應該這樣做:
x = (boolean condition 1) ? result_if_true : (boolean condition 2) ? result_if_bool_2_is_true : result_if false;
例如
drink = isThisPersonAChild ? lemonade : isThisPersonAGitl ? wine : beer
在您的代碼片段中,很難理解發生了什么,因為您經常使用 = 運算符。 在大多數語言中,您可以像這樣初始化幾個變量:
a = b = c = 0,所以 a、b、c 將 = 0;
所以我認為你的錯誤是過於頻繁地使用 = 運算符,所以也許只有這個條件才重要,而其他條件則被簡單地跳過:
pixels[positionOfPixel - offset + 1] == zero ? two : zero;
抱歉它沒有幫助,因為我真的不是 C# 編碼員)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.