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

.NET 中 is 與 as 運算子的差異與效能分析

     編輯:關於C語言

型別轉換基礎規則

  • 衍生型別 → 基底型別:隱式轉換,安全。
  • 基底型別 → 衍生型別:需顯式轉換 (Type)obj,可能拋出 InvalidCastException。
  • GetType() 取得確切型別;Convert 處理基礎型別;Parse 將字串轉基本型別。
  • 值型別與參考型別轉換涉及裝箱/拆箱。

is 運算子

  • 檢查相容性,回傳 true/false,不拋例外。
  • 若物件為 null,永遠回傳 false。
  • 典型用法:if (o is A) { A a = (A)o; } — 會進行兩次型別檢查。

as 運算子

  • 檢查相容性,成功回傳物件,失敗回傳 null,不拋例外。
  • 後續必須檢查 null,否則強制轉換會拋 NullReferenceException。
  • 典型用法:B b = o as B; if (b != null) { ... } — 僅一次型別檢查。

效能與最佳實踐

as 運算子僅執行一次型別檢查,效能優於 is + 強制轉換的兩次檢查。建議:

  • 只需判斷型別時用 is。
  • 需轉換並使用物件時,優先用 as 搭配 null 檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved