c# – 如何将嵌套的三元运算符转换为嵌套的if-else语句?

c# – 如何将嵌套的三元运算符转换为嵌套的if-else语句?,第1张

概述我很难将以下C#代码转换为if-else语句,这样我就能理解业务逻辑.任何人都可以帮助我,检查我的转换是否正常? 码: dateInit = objInstance == null ? (DateTime?)null: objInstance.DateAnt == null ? objInstance.DatePost > o 我很难将以下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)  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语句?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1215184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存