当前位置:  开发笔记 > 编程语言 > 正文

这是ExtensionMethod的好用吗?

如何解决《这是ExtensionMethod的好用吗?》经验,为你挑选了1个好方法。

我只是写了一句if语句

if (value == value1 || value == value2 || value == value3 || value == value4)
    //do something

令我很生气的是,我总是要重复'value =='部分.在我看来,除了难以阅读之外,这没有其他目的.

我编写了以下ExtensionMethod,它应该使上面的场景更具可读性:

public static bool IsEqualToAny(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语句(如果此值等于其中任何一个而不是这些值包含此值).在每个对象的intellisense中显示另一个方法对我来说不是问题.



1> Marc Gravell..:

为不受限制的内容编写扩展方法是不常见的T.尤其是,这种方法很快就会使你的智能感知很难使用.

虽然有效,但我可能会将其作为扩展方法避免使用 - 也许只是使用标准的静态实用程序方法.

C#3数组初始化器语法可能更容易?

bool isTrue = new[] { 1, 2, 3 }.Contains(3);

当然,对于大型数据集,您可能希望缓存HashSet某个地方;-p

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有