Contains(...)
方法区分大小写。我想使用以下代码覆盖它,使其不区分大小写(该代码从这里抄来):
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source.IndexOf(toCheck, comp) >= 0;
}
然而,我不知道代码应该粘贴在哪里。它应该放在程序类的同一命名空间中吗?它需要一个专用类吗?
Contains(...)
方法区分大小写。我想使用以下代码覆盖它,使其不区分大小写(该代码从这里抄来):
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source.IndexOf(toCheck, comp) >= 0;
}
然而,我不知道代码应该粘贴在哪里。它应该放在程序类的同一命名空间中吗?它需要一个专用类吗?
string
类创建一个扩展方法,那么您需要将其放置在某个类中。要使用它,只需确保您有一个包含此类的命名空间的using
语句引用。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);
由于您正在创建扩展方法,因此可以将其放入任何命名空间和任何静态类中:
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;
语句。
这是一个扩展方法。你可以创建一个名为MyStringExtension的类,但实际上名称并不重要。只要代码文件定义了命名空间,其中定义了MyStringExtension类,所有字符串都将具有该方法。
这个方法被称为扩展方法
你可以将它放在自定义命名空间的静态类中,并通过使用你的自定义命名空间来使用它。
你需要把这个扩展方法放在一个对你有意义的地方,例如一个必须是静态的实用类中。你实际上不能覆盖任何来自字符串的内容,这就是为什么要使用扩展方法。
示例:
public static class StringExtension
{
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source.IndexOf(toCheck, comp) >= 0;
}
}
不要覆盖(这是不可能的)或创建扩展方法,我建议您使用以下Contains
重载,并编写自定义IEqualityComparer
。
public static bool Contains<TSource>(
this IEnumerable<TSource> source,
TSource value,
IEqualityComparer<TSource> comparer);
这是一个扩展方法,因此它将在任何具有访问权限的字符串对象上可用。
你可以像这样定义它
namespace Example.ExtensionMethods
{
public static class StringExtensions
{
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source.IndexOf(toCheck, comp) >= 0;
}
}
}
并像这样使用
using Example.ExtensionMethods;
string s = "foobar";
int i = s.Contains("oob", StringComparison.InvariantCultureIgnoreCase);
我建议将它放在某种实用类中,其中包含诸如此类的好用的帮助方法。如果你将它添加到,比如一个StringUtils
类中,你只需要调用 StringUtils.Contains()
就可以使用它了。