Boolean和bool VS 雞蛋和雞

2021-09-22 06:32:20 字數 871 閱讀 5615

c/c++中沒有提供bool型別,我們可以用0和非0取而代之;而在.net中則提供了乙個boolean型別,其實是對0/1的乙個封裝。下面我們來看下這段**:

=true

;sizeof

(boolean));

//得到的結果是1byte

unsafe

//先要用/unsafe(專案屬性->build->allow unsafe code)來關閉安全檢查

得出的結果是1,當boolean變數b賦值為false時,得到的結果是0。雖然只用1個bit就可以表示0/1了,但計算機儲存的最小單位是byte,沒辦法只好浪費另外7個bit了:)

現在轉入正題來扯淡,出於對boolean的好奇,我用reflector反彙編了下mscorlib.dll,得到boolean的源**(完整的**見附錄),居然看到了下面的內容:

public

struct

boolean : icomparable, iconvertible, icomparable

<

bool

>

, iequatable

<

bool

>

msdn中解釋bool與boolean的關係是:「bool 關鍵字是 system.boolean 的別名」。觀察上面的boolean型別定義,在其繼承的泛型介面和成員變數中,我們找到了「bool」的影子(我想可能時reflector將il**反彙編時將型別boolean翻譯成c#中的關鍵字bool),也就是說boolean的定義依賴與bool(boolean)。這就好比雞蛋與雞,到底是先有雞蛋還是先有雞?到底是先有boolean的型別定義還是先有boolean型別呢?

附錄 - boolean類原始碼:

布林值和Boolean型別

今天在複習js基本資料型別的時候發現了乙個以前忽略的知識點,那就是boolean型別和布林值的區別。首先,要明確一下,boolean型別是與布林值對應的引用類。舉例來看,var object new boolean false var value true alert object value 可能...

如何獲取和判斷json中的boolean 值

其實我是明確知道返回來的資料是 boolean 型別的,只是在做判斷的時候 發現直接使用 if responseobject objectforkey success 判斷沒有任何意義,因為我判斷的是這是不是為真,換句話說,就是是不是非空,靠當然非空啦,大不了返回乙個false 但那個也是有值得,s...

Scrum 「雞」和「豬」的寓言

scrum嚴格區分這兩類人 對承擔專案的人賦予權力,使其完成必要工作,確保專案成功 無責任人員則無權對專案施加不必要的干涉。這兩類人在scrum中被形象地稱為 豬 和 雞 雞 是旁觀者。這起源於一則古老笑話 乙隻雞和一頭豬在路上走,雞對豬說 你想不想和我一起開家餐館?豬想了想,答到 好的,我很樂意。...