我刚刚写了一个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
编辑:
感谢所有伟大的答案.为了记录:我已经保留了这个方法.虽然你可以简单地使用new [] {value1,value4} .Contains(value)的建议是真的,但我更喜欢从左到右读取这种if语句(如果这个值等于而不是如果这些值包含这个值).在每个对象上都有一个在智能感知中显示的方法对我来说不是一个问题.