C#语法里面的问号

可能重复:
使用条件?:(三元)运算符的好处

嗨,我正在查看这个freesource库,我看到这很奇怪 – 至少对我而言 – 语法

*currFrame = ( ( diff >= differenceThreshold ) || ( diff <= differenceThresholdNeg ) ) ? (byte) 255 : (byte) 0; 

currFrame是byte类型

diff,differenceThreshold和differenceThresholdNeg的类型为Int。

问号有什么作用? ,这个奇怪的分配句子是什么意思?

提前致谢

条件运算符 (?:)根据布尔表达式的值返回两个值中的一个。 以下是条件运算符的语法。

 condition ? first_expression : second_expression; 

C#参考: http : //msdn.microsoft.com/en-us/library/ty67wk28.aspx

在你的情况下,如果( diff >= differenceThreshold ) || ( diff <= differenceThresholdNeg ) currFrame将被赋值为255 ( diff >= differenceThreshold ) || ( diff <= differenceThresholdNeg )true ,否则将赋值0。

这是一样的

 if(( diff >= differenceThreshold ) || ( diff <= differenceThresholdNeg ) ) currFrame = (byte) 255 else currFrame = (byte) 0 

它是条件运算符 。

?:运算符(C#参考) :

条件运算符(?:)根据布尔表达式的值返回两个值中的一个。 条件运算符的forms

 condition ? first_expression : second_expression; 

‘?:’是一个条件运算符,你可以在这里阅读: http : //msdn.microsoft.com/en-us/library/ty67wk28(v = vs.80).aspx

这是一个三元运算符(参见MSDN )。 它遵循以下语法:

 result = condition ? result_if_condition_true : result_if_condition_false 
 if ( diff >= differenceThreshold ) || ( diff <= differenceThresholdNeg ) ) *currFrame = (byte) 255; else *currFrame = (byte) 0;