假设我正在使用thing类的对象。我得到这个对象的方式有点罗word:

 BigObjectThing.Uncle.PreferredInputStream.NthRelative(5)

我想看看这个thing是否等于xyz。天真的写方法可能是:
 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));

09-27 13:46