c# – 如何将嵌套的三元运算符转换为嵌套的if-else语句?
发布时间:2020-12-16 01:28:43 所属栏目:百科 来源:网络整理
导读:我很难将以下C#代码转换为if-else语句,这样我就能理解业务逻辑.任何人都可以帮助我,检查我的转换是否正常? 码: dateInit = objInstance == null ? (DateTime?)null: objInstance.DateAnt == null ? objInstance.DatePost otherObjInstance.DateCon ? (Date
我很难将以下C#代码转换为if-else语句,这样我就能理解业务逻辑.任何人都可以帮助我,检查我的转换是否正常?
码: 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) X else { if (y) Y else Z } 是相同的 if (x) X else if (y) Y else Z 这在页面上更简单. 第二个: if (x) { if (y) Y else Z } else NX 是相同的 if (!x) NX else { if (y) Y else Z } 现在我们再次处于第一种情况,可以进一步简化. 通过重复组合这些规则,您可以简化许多复杂的if-else语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |