c# – 这是一个很好的使用ExtensionMethod吗?

我刚刚写了一个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语句(如果这个值等于而不是如果这些值包含这个值).在每个对象上都有一个在智能感知中显示方法对我来说不是一个问题.

解决方法

您尚未添加仅对特定应用程序或上下文有用的功能,您的扩展名被明确命名,并且行为是显而易见的,而无需查看实现.

答案是“是的,是”

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...