当在C#中考虑is
与as
时,您可以使用其中一种来确认某个类型是否可以转换为另一种类型。有没有理由使用is和as?
// using is
Employee e = new Manager();
if (e is Manager) {
var m = (Manager) e;
// m is now type `Manager`
}
// using as
Employee e = new Manager();
Manager m = e as Manager;
// m is now type `Manager`
if (m != null) {
}
我明白两个操作员如何工作以及如何使用它们。考虑is
运营商检查类型两次,而as
检查一次,并且它们对于支持哪些类型的转换具有相同的限制,是否有使用is
的强制性理由?
标记为重复的是询问两个操作员之间有什么区别。我的问题是特别要求“了解两者都做什么,为什么使用is
?”他们不是同一个问题,也没有相同的答案。
你不使用被检查出来如何安全地投MSDN网站和AS https://msdn.microsoft.com/en-us/library/cc488006.aspx 'as运算更有效,因为如果可以成功投射,它实际上会返回投射值。 is运算符只返回一个布尔值。因此,当你只是想确定一个对象的类型,但不必实际施放它时,就可以使用它。' – MethodMan
我明白如何使用这两个操作符来安全地施放类型。我更怀疑是否有令人信服的理由使用'is'而不是'as'。 – jdphenix
Duplicate:http://stackoverflow.com/a/3786390/4705221 –