簡體   English   中英

如何在C#中測試變量是否為變量類型?

[英]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做,除了它似乎需要一些類型比較為IsInstanceOfTypeIsSubclassOf似乎並沒有正確地匹配所有的情況。

這真的是測試變量的最佳方法是一種類型,由另一個變量引用,還是我錯過了一種更簡單的語法?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM