检查三个对象是否为空或只有两个对象可以为空的最有效方法
Most efficient way to check three objects for not being null OR only two of them can be null
我正在努力解决验证三个对象(A、B、C)的问题
这些是我的条件
然后的 - none 可以为 null
- then最多有一个不为空
我想在没有很多 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
}
我正在努力解决验证三个对象(A、B、C)的问题
这些是我的条件
-
然后的
- none 可以为 null
- then最多有一个不为空
我想在没有很多 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
}