检查三个对象是否为空或只有两个对象可以为空的最有效方法

Most efficient way to check three objects for not being null OR only two of them can be null

我正在努力解决验证三个对象(A、B、C)的问题

这些是我的条件

我想在没有很多 if 表达式和创建可怕代码的情况下解决它。

所以

  A  B  C
A 1  0  0
B 0  1  0
C 0  0  1

因为它表明我需要实现类似这个伪 table 的东西,然后它们中只有一个可以是真的,而其他的都是假的

决赛

什么表达式可以提供这样的验证?

创建一个辅助方法来执行此操作(通过测试),然后在这一点上,让代码尽可能凌乱或干净,以实现您的目标。

这是一个相当简单的实现;每次保证恰好3次检查。

public static bool OnlyOneNotNull(object object1, object object2, object object3)
{
    if (object1 != null)
        return object2 == null && object3 == null;

    if (object2 != null)
        return object3 == null;

    return object3 != null;
}

用法很简单:

if (OnlyOneNotNull(A, B, C))
{
    //do something
}