c# – 在将IClass转换为Class时应该检查NULL吗?
发布时间:2020-12-15 03:42:51 所属栏目:百科 来源:网络整理
导读:问题1在以下情况下应该检查NULL吗? public interface INewClass {}public class NewClass : INewClass {}public void FunMeA(INewClass obj){ NewClass n = (NewClass) obj; ... // Should I check (n == null) here? // call methods defined inside INewC
问题1>在以下情况下应该检查NULL吗?
public interface INewClass {} public class NewClass : INewClass {} public void FunMeA(INewClass obj) { NewClass n = (NewClass) obj; ... // Should I check (n == null) here? // call methods defined inside INewClass (updated from NewClass to INewClass) ... } A concrete example,public void FunMeB(IAsyncResult itfAR) { AsyncResult ar = (AsyncResult) itfAR; ... // Should I check (ar == null) here? // access ar.AsyncDelegate ... } 问题2>我刚刚开始从C转移到C#. 谢谢 解决方法
这样做时
NewClass n = (NewClass) obj; 没有任何意义,因为如果不转换它将抛出一个无效的转换异常. 如果您对您是否可以实际投下任何疑问,您可以这样做: NewClass n = obj as NewClass; 然后 if(n != null) ... 你正在做的演员称为直播,系统将假定它可以制作. n = obj作为NewClass被称为间接转换,是为那些你想告诉程序的情况“嘿,我认为这将工作,但如果不是不翻转和抛出一个异常…我会交易如果它不起作用.“ 使用的是vs,在铸造. 根据你想要的情况,一个会比另一个更好.从技术上来说,从性能的角度来看是首选. .Net将使用原子式尝试来转换为所需类型,如果不是,则返回null,那么它将不得不将继承树进行两次,以查看它是否匹配该类型,然后将其转换.所以在大多数情况下,如果你想看看是否要转换并使用该类型,最好是: var obj = o as type if (obj != null) 相反 if(o is type) { var obj = (type); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 正则匹配这样两个字符串a'bc'd,abcd
- 聚合、ospf、nat相结合的配置
- RETURNING返回的PostgreSQL存储值
- ruby-on-rails-3.2 – 使用“自定义”队列名称的Sidekiq wo
- 正则表达式的介绍和常用的正则表达式
- react native 这样理解运行机制
- 关于pc上的flash动画转移到Cocos2d-x使用
- vue2.0 better-scroll 实现移动端滑动的示例代码
- cocos2d-x3.10java.lang.UnsatisfiedLinkError: Couldn'
- ruby-on-rails – 如何处理我的Rails REST API中的错误或不