首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重写Contains()?

如何重写Contains()?
EN

Stack Overflow用户
提问于 2012-01-18 21:05:29
回答 8查看 6.5K关注 0票数 6

字符串的Contains(...)方法区分大小写。我想用下面的代码覆盖它,使它不区分大小写(这是从here窃取的):

代码语言:javascript
复制
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    return source.IndexOf(toCheck, comp) >= 0;
}

但是,我不知道代码应该粘贴到哪里。它是否应该放在类program的相同命名空间中?它需要一个专用的类吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-01-18 21:09:17

如果您打算为string类创建一个extension method,那么您需要将它放在某个类中。要使用它,只需确保您有一条using语句来指定对包含该类的命名空间的引用。

例如:

代码语言:javascript
复制
namespace SomeNamespace
{
    public static class StringExtensions
    {
        public static bool Contains(this string source, string toCheck, StringComparison comp)
        {
            return source.IndexOf(toCheck, comp) >= 0;
        }
    }
}

// ... In some other class ...
using SomeNamespace;

// ...
bool contains = "hello".Contains("ll", StringComparison.OrdinalIgnoreCase);
票数 10
EN

Stack Overflow用户

发布于 2012-01-18 21:09:23

在创建扩展方法时,可以将其放入任何名称空间和任何静态类中:

代码语言:javascript
复制
namespace MyProject.MyNamespace
{
    public static class MyExtensions
    {
        public static bool Contains(this string source, string toCheck, StringComparison comp)
        {
            return source.IndexOf(toCheck, comp) >= 0;
        }
    }
}

这纯粹是一个组织上的事情。当然,在使用代码的任何地方,都需要添加必要的using MyProject.MyNamespace;语句。

票数 2
EN

Stack Overflow用户

发布于 2012-01-18 21:08:41

你需要把这个扩展方法放在对你有意义的地方,比如一个工具类,它必须是静态的。实际上,您不能覆盖string中的任何内容,这就是您使用扩展方法的原因。

示例:

代码语言:javascript
复制
public static class StringExtension
{
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source.IndexOf(toCheck, comp) >= 0;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8910588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档