在C#中如何判斷一個類型是否為另一個類型的子類型或相同類型,且不使用布林運算子或擴充方法?
C#中的Type.IsSubclassOf
方法可以有效地檢查一個類型是否為另一個類型的子類別。但是,當類型完全相同的時候,它會回傳false
。這在嘗試確定一個類型是否為子類別或與基底類別本身相同的情況下會帶來挑戰。
幾種方法及其限制
有幾種方法,但每種方法都有其限制:
Type.IsSubclassOf:
Type.IsAssignableFrom:
"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中文網其他相關文章!