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