byte len = (data == null) ? (byte)0 : (byte)data.Length
让我们来剖析这一点。
首先,我们知道我们声明了可变长度,并将其初始化为一个变量:byte len =
接下来,我们有我们的测试。我会删除括号,因为它们是不必要的:data == null
以后,我们如果测试结果是真要返回的值:(byte)0
最后,我们的价值要返回如果测试是假的:(byte)data.Length
让我们将其转换为伪代码: byte len = if(data is null)0,否则数据。长
得更加详细:
如果数据为空,让LEN = 0
否则,让LEN =数据
这就是所谓的 “” 三元运算符的长度。 Is是唯一接受三个参数的运算符:测试,如果为true,则为value-if-false。如果有的话,许多语言都有它,它的语法在语言和语言之间差别不大。从技术上讲,它只是语法糖(一种快捷方式,和字节码等价),用于以下内容: byte len; (data == null) len = 0;如果(data == null) len = 0; } else len = data.Length; }
它可以在变量声明之外使用。例如,我们可以有以下几种: 返回数据== null? 0:data.Length;
一些程序员认为使用三元运算符是一个糟糕的编程习惯,由于可读性问题。就我个人而言,我经常会发现它的选择过于冗长而且不易读。
值得注意的是,C#更进一步,甚至有语法糖的语法糖。代码下面的三个片段都是等价的:
// Most verbose method:
object a;
if (b == null)
{
a = c;
}
else
{
a = b;
}
// Significantly less verbose:
object a = b == null ? c : b;
// Now this is just plain awesome:
object a = b ?? c;
这最后的操作装置,“返回b,除非它为空,在这种情况下,返回C”。这非常有用 - 不要忘记它!
http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx – 2012-02-03 23:42:38
'顺便说一下变量“data”是一个byte.'或byte数组? – 2012-02-03 23:47:39
这是一个字节数组。我编辑过的帖子... – Zahrec 2012-02-03 23:54:24