何时在C#中使用“ as”,何时使用“ is” [重复]

问题描述

||                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        您应该使用最易读的代码。因此,这实际上取决于您在做什么。 恕我直言,
is
关键字是邪恶的。它邀请您打破Liskov替代原则。     ,        第二个示例不适用于值类型,因为如果转换失败,“ 1”运算符将返回null。在C#中,如果对象的类型与您提供的类型匹配,则
\'is\'
运算符将返回
true
,否则返回false。     ,        is运算符检查对象是否与给定类型兼容,并且评估结果为布尔值:true或false。 is运算符永远不会引发异常。 as运算符的工作方式与强制转换一样,只是as运算符永远不会引发异常。相反,如果无法投射对象,则结果为null。如果失败,常规强制转换'(Type)\'将引发异常。请注意,使用\'as \'转换为null会产生null。因此,“ as” -cast的null结果并不总是意味着对象不是给定类型,可能是实例为null。     ,        根据您的代码,如果需要将\'o \'用于某些操作,则\“ as \”更好。如果仅使用\'o \'来检查类型,则\'is \'更好。     ,        我认为两个代码都做同样的事情。如果不确定对象是否正在处理,我可能会使用第一个(例如,动态加载应该实现接口的类)。但是如果我很确定,将使用第二个(例如,在页面上找到控件)。     ,        使用\“ as \”并检查null比使用\“ is \”然后进行强制转换要快。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...