微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

解决方法

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

答案是“是的,是”

原文地址:https://www.jb51.cc/csharp/97615.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐