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;