我见过很多人使用以下代码:
Type t = typeof(obj1);
if (t == typeof(int))
// Some code here
Run Code Online (Sandbox Code Playgroud)
但我知道你也可以这样做:
if (obj1.GetType() == typeof(int))
// Some code here
Run Code Online (Sandbox Code Playgroud)
或这个:
if (obj1 is int)
// Some code here
Run Code Online (Sandbox Code Playgroud)
就个人而言,我觉得最后一个是最干净的,但有什么我想念的吗?哪一个最好用,还是个人喜好?
要检查类型是否是C#中另一种类型的子类,很容易:
typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true
Run Code Online (Sandbox Code Playgroud)
但是,这将失败:
typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false
Run Code Online (Sandbox Code Playgroud)
有没有办法检查类型是否是基类本身的子类OR,而不使用OR运算符或使用扩展方法?