首頁 > 後端開發 > C++ > 在 C# 中,如何在不使用布林運算子或擴充方法的情況下檢查某個類型是否為子類型或與另一個類型相同?

在 C# 中,如何在不使用布林運算子或擴充方法的情況下檢查某個類型是否為子類型或與另一個類型相同?

Mary-Kate Olsen
發布: 2025-01-09 15:11:46
原創
312 人瀏覽過

How Can I Check if a Type is a Subtype or Identical to Another Type in C# Without Boolean Operators or Extension Methods?

在C#中如何判斷一個類型是否為另一個類型的子類型或相同類型,且不使用布林運算子或擴充方法?

C#中的Type.IsSubclassOf方法可以有效地檢查一個類型是否為另一個類型的子類別。但是,當類型完全相同的時候,它會回傳false。這在嘗試確定一個類型是否為子類別或與基底類別本身相同的情況下會帶來挑戰。

幾種方法及其限制

有幾種方法,但每種方法都有其限制:

  1. Type.IsSubclassOf:

    • 適用於檢查子類,但如果類型相同則失敗。
  2. Type.IsAssignableFrom:

    • 可以回答問題,但也可能出現誤報,指示存在繼承或類型同一性,而實際上並不存在。
  3. "is" 和 "as" 運算子:

    • 需要物件引用,不能直接對型別物件進行操作。

結論

不幸的是,沒有一種方法可以在不進行額外檢查的情況下提供簡潔的解決方案。要得到完整的答案,需要以下程式碼:

<code class="language-csharp">typeof(Derived).IsSubclassOf(typeof(Base)) || typeof(Derived) == typeof(Base);</code>
登入後複製

或者,更簡潔地寫成一個方法:

<code class="language-csharp">public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
{
    return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase;
}</code>
登入後複製

以上是在 C# 中,如何在不使用布林運算子或擴充方法的情況下檢查某個類型是否為子類型或與另一個類型相同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板