我想要做这样的事情在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
似乎并不匹配所有情况都适当。
这真的是最好的方式来测试变量是一种类型,由另一个变量引用,还是有一个简单的语法,我错过了?
总是有'typeof'运算符和'as'关键字 –
感谢编辑Tim :) –
@ Dan-o,“as”与“is”有同样的问题,因为它只能用于与类型名称。 typeof()将不会显示_someVar是否是派生类型的实例。 –