Я просто написал оператор if в строках
if (value == value1 || value == value2 || value == value3 || value == value4)
//do something
и это раздражает меня, что я всегда должен повторить часть 'value =='. По-моему, это не имеет никакой цели, кроме как затруднить его чтение.
Я написал следующий 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?
EDIT:
Спасибо за все замечательные ответы. Для записи: я сохранил метод. Хотя предположение, что вы можете просто использовать new []{value1,value2,value3,value4}.Contains(value)
, верно, я просто предпочитаю читать этот тип инструкции if слева направо (, если это значение равно любому из этих, а не , если эти значения содержат это значение). Еще один метод, проявляющийся в intellisense для каждого объекта, не является проблемой для меня.