假设我正在使用thing
类的对象。我得到这个对象的方式有点罗word:
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5)
我想看看这个
thing
是否等于x
或y
或z
。天真的写方法可能是: BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x ||
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == y ||
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == z
在某些语言中,我可以这样写:
BigObjectThing.Uncle.PreferredInputStream.NthRelative(5) == x |= y |= z
但是C#不允许这样做。
是否有C#惯用的方式将此测试编写为单个表达式?
最佳答案
只需使用一个变量:
var relative = BigObjectThing.Uncle.PreferredInputStream.NthRelative(5);
return relative == x || relative == y || relative == z;
或者,如果您想花大价钱看一组东西:
var relatives = new HashSet<thing>(new[] { x, y, z });
return relatives.Contains(BigObjectThing.Uncle.PreferredInputStream.NthRelative(5));