c# – 在层次结构中更高的完成功能
发布时间:2020-12-15 04:35:52 所属栏目:百科 来源:网络整理
导读:我厌倦了写作: if(objectA!=null) return; 要么: if(objectB==null) return; 所以我希望缩短这个片段,如下所示: Returns.IfNull(objectA); 它与相同的长度非常匹配,但通常很少有对象可以检查和添加参数,因为参数可以缩短: if(objectA==null || objectB!=
我厌倦了写作:
if(objectA!=null) return; 要么: if(objectB==null) return; 所以我希望缩短这个片段,如下所示: Returns.IfNull(objectA); 它与相同的长度非常匹配,但通常很少有对象可以检查和添加参数,因为参数可以缩短: if(objectA==null || objectB!=null || objectC!=null) return; 至: Returns.IfNull(objectA,objectB,objectC); 基本上函数IfNull必须在堆栈跟踪中获得更高一级的功能并完成它.但这只是一个想法,我不知道它是否可能.我可以在某些lib中找到相似的逻辑吗? 解决方法
不,你基本上要求函数退出比自身更高的函数,这是不可取的,也不是真的可能,除非你抛出一个异常(它本身不返回).
因此,您可以执行简单而简洁的if-null-return检查,或者您可能想要执行的操作是抛出定义良好的异常,但我不建议流控制的异常.但是,如果这些是异常(错误)情况,则考虑抛出ArgumentNullException()并在适当时处理它. 您可以编写一些帮助方法来为您抛出ArgumentNullException(),当然,为了清理它: public static class ArgumentHelper { public static void VerifyNotNull(object theObject) { if (theObject == null) { throw new ArgumentNullException(); } } public static void VerifyNotNull(params object[] theObjects) { if (theObjects.Any(o => o == null)) { throw new ArgumentNullException(); } } } 然后你可以写: public void SomeMethod(object obj1,object obj2,object obj3) { ArgumentHelper.VerifyNotNull(obj1,obj2,obj3); // if we get here we are good! } 但是再一次,这是异常,而不是堆栈中前一个方法的“返回”,这是不可能直接实现的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |