测试C#对象的类型

测试C#对象的类型,c#,C#,我经常想知道在进行手术前检查物体类型的更好方法是什么 我可以使用“is”操作符: if(obj is MyClass){ var tObj = obj as MyClass; } 或者我可以使用“as”运算符并测试null: var tObj = obj as MyClass; if(tObj != null){ } 一个比另一个好吗?单程快吗?这有关系吗 第二种方法更可取,因为它更快 在第二种方法中,您只需将操作符作为调用一次,并执行空检查,这比作为操作符要便宜得多。这取决于您

我经常想知道在进行手术前检查物体类型的更好方法是什么

我可以使用“is”操作符:

if(obj is MyClass){
    var tObj = obj as MyClass;
}
或者我可以使用“as”运算符并测试null:

var tObj = obj as MyClass;

if(tObj != null){

}

一个比另一个好吗?单程快吗?这有关系吗

第二种方法更可取,因为它更快


在第二种方法中,您只需将操作符
作为
调用一次,并执行空检查,这比
作为
操作符要便宜得多。

这取决于您如何使用它

例如,如果面板的可见性取决于对象的类型,则
is
会更好,因为您可能不需要再次使用该对象


但是对于您提供的示例,
as
会更好,因为您有一个工作对象要使用。

您也可以使用obj.GetType(),我假设我正在使用一组已知的类型。