当前位置:  开发笔记 > 编程语言 > 正文

链式IF结构

如何解决《链式IF结构》经验,为你挑选了3个好方法。

想象一下这种情况,我有一个对象,我需要检查一个属性.但是,该对象当前可以具有空值.

如何在单个"if"条件下检查这两个条件?

目前,我必须做这样的事情:

if (myObject != null)
{
    if (myObject.Id != pId)
    {
        myObject.Id = pId;
        myObject.Order = pOrder;
    }
}

我想要这样的东西:

if (myObject != null && myObject.Id != pId)

我想仅在第一个条件成立时评估第二个条件.

也许我错过了什么,这就是为什么我需要你的帮助;-)



1> Marc Gravell..:
if(myObject != null && myObject.Id != pId)
{
   myObject.Id = pId;
   myObject.Order = pOrder;
}

&&是一个短路逻辑测试 - 如果左侧是真的,它只评估右侧.与"a&b"形成对比,"a&b"总是评估双方(并且按位"和")



2> James Curran..:

应该强调的是,if()中&&的短路评估完全由语言标准(C,C++,Java和C#)保证.自第一版K&R的" C编程语言 " 以来,就一直如此.

这不是你必须担心的"我的编译器是否实现了这个?".如果肯定不会.



3> spender..:
if (myObject != null && myObject.Id != pId)
{
//bla
}

这是安全的,因为运算符&&被懒惰地评估,这意味着如果LHS是假的,则从不评估RHS

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有