[英]How do I test is a variable is of a variable type in C#?
我想在C#中執行以下操作:
public bool ValidType(Type type)
{
return _someVar is type;
}
但是,C#似乎不支持此語法。 “ is”右邊的項目似乎必須是絕對類型名稱,而不是對類型的引用。
我發現以下代碼似乎有效:
return _someVar.GetType().IsInstanceOfType(type) ||
_someVar.GetType().IsSubclassOf(type) ||
_SomeVar.GetType().IsAssignableFrom(type);
我不明白IsAssignableFrom
做,除了它似乎需要一些類型比較為IsInstanceOfType
和IsSubclassOf
似乎並沒有正確地匹配所有的情況。
這真的是測試變量的最佳方法是一種類型,由另一個變量引用,還是我錯過了一種更簡單的語法?
IsAssignableFrom
就足夠了,不需要另外兩個測試,但是您將其稱為錯誤方式。 這是正確的方法:
public bool ValidType(Type type)
{
return type.IsAssignableFrom(_someVar.GetType());
}
我不明白IsAssignableFrom做什么
實際上,它確實按照名稱告訴您的內容:它測試是否可以從其他類型的值分配給定類型的變量。
正如Konrad提到的, IsAssignableFrom
就足以進行測試。
確定是否可以從指定Type的實例分配當前Type的實例。
http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
您不需要其他兩項檢查,因為在這種情況下, IsAssignableFrom
也將為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.