码:
dateInit = objInstance == null ? (DateTime?)null: objInstance.DateAnt == null ? objInstance.DatePost > otherObjInstance.DateCon ? (DateTime?)null : objInstance.DatePost : objInstance.DateAnt;
我的转换:
if (objInstance == null){ dateInit = (DateTime?)null;}else{ if (objInstance.DateAnt == null) { if (objInstance.DatePost > otherObjInstance.DateCon) { dateInit = (DateTime?)null; } else { dateInit = objInstance.DatePost; } } else { dateInit = objInstance.DataAnt; }}解决方法 您的转化似乎是正确的.但是,我会以两种方式改进它.
首先,在if表单中不需要null的强制转换. (?:运算符对结果和替代位置中可能出现的类型有一定的限制,这会导致开发人员插入强制转换.)
其次,if语句不必要地嵌套.整个事情可以表达得更加可读:
if (objInstance == null) dateInit = null;else if (objInstance.DateAnt != null) dateInit = objInstance.DataAnt;else if (objInstance.DatePost > otherObjInstance.DateCon) dateInit = null;else dateInit = objInstance.DatePost;
从这个版本开始,业务逻辑比我认为的版本更容易理解.
我们可以使用两个规则进行转换.第一:
if (x) Xelse { if (y) Y else Z}
是相同的
if (x) Xelse if (y) Yelse Z
这在页面上更简单.
第二个:
if (x){ if (y) Y else Z}else NX
是相同的
if (!x) NXelse { if (y) Y else Z}
现在我们再次处于第一种情况,可以进一步简化.
通过重复组合这些规则,您可以简化许多复杂的if-else语句.
总结以上是内存溢出为你收集整理的c# – 如何将嵌套的三元运算符转换为嵌套的if-else语句?全部内容,希望文章能够帮你解决c# – 如何将嵌套的三元运算符转换为嵌套的if-else语句?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)