测试C#对象的类型
我经常想知道在进行手术前检查物体类型的更好方法是什么 我可以使用“is”操作符:测试C#对象的类型,c#,C#,我经常想知道在进行手术前检查物体类型的更好方法是什么 我可以使用“is”操作符: if(obj is MyClass){ var tObj = obj as MyClass; } 或者我可以使用“as”运算符并测试null: var tObj = obj as MyClass; if(tObj != null){ } 一个比另一个好吗?单程快吗?这有关系吗 第二种方法更可取,因为它更快 在第二种方法中,您只需将操作符作为调用一次,并执行空检查,这比作为操作符要便宜得多。这取决于您
if(obj is MyClass){
var tObj = obj as MyClass;
}
或者我可以使用“as”运算符并测试null:
var tObj = obj as MyClass;
if(tObj != null){
}
一个比另一个好吗?单程快吗?这有关系吗 第二种方法更可取,因为它更快
在第二种方法中,您只需将操作符
作为调用一次,并执行空检查,这比作为操作符要便宜得多。这取决于您如何使用它
例如,如果面板的可见性取决于对象的类型,则is
会更好,因为您可能不需要再次使用该对象
但是对于您提供的示例,as
会更好,因为您有一个工作对象要使用。您也可以使用obj.GetType(),我假设我正在使用一组已知的类型。