我刚刚在以下行中写了一个 if 语句
if (value == value1 || value == value2 || value == value3 || value == value4)
//do something
我总是不得不重复“价值==”部分,这让我很恼火。在我看来,除了使它难以阅读之外,这没有任何目的。
我编写了以下 ExtensionMethod 应该使上述场景更具可读性:
public static bool IsEqualToAny<T>(this T value, params T[] objects)
{
return objects.Contains(value);
}
现在我可以简单地写
if (value.IsEqualToAny(value1, value2, value3, value4))
//do something
这是 ExtensionMethod 的一个很好的用法吗?
编辑:
感谢所有伟大的答案。备案:我保留了该方法。虽然您可以简单地使用的建议new []{value1,value2,value3,value4}.Contains(value)
是正确的,但我只是更喜欢从左到右阅读这种 if 语句(如果这个值等于其中任何一个,而不是这些值是否包含这个值)。在每个对象的智能感知中显示另一种方法对我来说不是问题。