首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 布林型別:真假二值邏輯、與 C/C++ 差異、型別安全與最佳實務

     編輯:關於C語言

定義與核心特性

bool 唯一目的:表示邏輯真/假。C# 採嚴格二值制:

  • true:真
  • false:假

底層儲存通常為 1 位元(實際佔 1 位元組對齊)。

關鍵差異:C/C++ vs C#

特性C/C++C#
假值表示0false(關鍵字)
真值表示非 0 任意值true(關鍵字)
整數隱性轉換允許禁止
指標/位元運算常用於布林不支援

編譯期強制檢查範例

bool x = 1;        // ❌ 編譯錯誤:無法將 int 隱性轉換為 bool
bool y = true;     // ✅ 正確
bool z = (5 > 3);  // ✅ 比較運算回傳 bool

int i = 1;
if (i) { }         // ❌ 編譯錯誤:if 條件必須為 bool
if (i != 0) { }    // ✅ 明確比較

型別安全設計哲學

  • 消除「非 0 即真」隱性邏輯,減少誤判
  • 強迫開發者明確表達意圖(!= 0、== null、.Any())
  • 配合 Nullable<bool> (bool?) 表達三態邏輯(真/假/未知)

常見用法模式


// 比較運算
bool isAdult = age >= 18;

// 邏輯運算
bool canAccess = isAuthenticated && hasPermission;

// 三元運算
string status = isOnline ? "線上" : "離線";

// Nullable 三態
bool? userConfirmed = null;  // 未決定
if (userConfirmed == true) { /* 確認 */ }
else if (userConfirmed == false) { /* 拒絕 */ }
else { /* 待定 */ }

效能與互操作

  • 陣列 bool[] 位元級壓縮(BitArray 更高效)
  • P/Invoke 對應 Win32 BOOL (4 位元組),需 [MarshalAs(UnmanagedType.Bool)]

總結

C# bool 以嚴格型別安全取代 C/C++ 鬆散慣例,編譯期攔截隱性轉換錯誤,配合 bool? 完整表達三態邏輯,是現代語言布林型別設計典範。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved