简化条件

时间:2015-10-06 18:44:47

标签: c#

var objectA = new ObjectA();
var objectB = new ObjectB();

....

if(objectA!=null && objectB!=null){

//safely use objectA and objectB.. 
}
else{
 if(objectA==null&&objectB!=null){
 // safely use objectA but not objectB
 }
 if(objectA!=null&&objectB==null){
 //safely use objectB but not objectA
 }
 if(obectA==null&& objectB==null){
 // objects cannot be used.
 }
}

我该如何简化这种情况?

3 个答案:

答案 0 :(得分:1)

这似乎更容易跟随IMO

if(objectA != null){
    if(objectB != null){
        // safely use objectA or objectB
    }
    else{
        // safely use objectA but not objectB
    }
}
else if(objectB != null){
    // safely use objectB but not objectA

else{
    // do not use either
}

答案 1 :(得分:1)

由于您有四种可能感兴趣的案例,我会做一个简单的if-else if-else if-else并避免任何不需要的嵌套。

if(objectA != null && objectB != null)
{    
    //safely use objectA and objectB.. 
}
else if(objectA == null && objectB == null)
{
    // objects cannot be used.
}
else if(objectB == null)
{
    //safely use objectA but not objectB
}
else
{
    // safely use objectB but not objectA
}

另外,如果你知道哪种情况最有可能你应该把它放在第一位,那么第二种情况最有可能,依此类推。例如,如果您知道大部分时间nullobjectA不太可能是null而不是objectB,那么您可以执行以下操作。

if(objectA != null && objectB != null)
{    
    //safely use objectA and objectB.. 
}
else if(objectA != null && objectB == null)
{
    //safely use objectA but not objectB
}
else if(objectB != null)
{
    // safely use objectB but not objectA
}
else
{
    // objects cannot be used.
}

答案 2 :(得分:0)

试试这个

   if (objectA != null && objectB != null)
        {
            //safely use objectA and objectB.. 
        }
        else
        {
            if (objectA == null && objectB != null)
            {
                // safely use objectA but not objectB
            }
            else if (objectA != null && objectB == null)
            {
                //safely use objectB but not objectA
            }
            else
            {              
                // objects cannot be used.
            }
        }