例如,我需要查看一个字符串是否包含一个子字符串,所以我只是这样做:
String helloworld = "Hello World";
if(helloworld.Contains("ello"){
//do something
}
但如果我有一系列元素
String helloworld = "Hello World";
String items = { "He", "el", "lo" };
我需要在 String 类中创建一个函数,如果有任何一个,它将返回 true
例如,数组中的项目包含在字符串中。
对于这种情况,我想用 Contains(IEnumerable) 覆盖函数 Contains(string),而不是在另一个类中创建函数。是否可以这样做,如果可以,我们如何覆盖该功能?非常感谢。
所以这里有完整的解决方案(谢谢大家):
public static bool ContainsAny(this string thisString, params string[] str) {
return str.Any(a => thisString.Contains(a));
}
请您参考如下方法:
你不能覆盖这个函数,但是你可以创建一个 extension method为了这:
public static class StringExtensions {
public static bool ContainsAny(this string theString, IEnumerable<string> items)
{
// Add your logic
}
}
如果您引用程序集并包含命名空间,您就可以像字符串上的普通方法一样调用它:
String helloworld = "Hello World";
String[] items = new string[] { "He", "el", "lo" };
if (helloworld.ContainsAny(items)) {
// Do something
}
(当然,您可以将其称为“包含”,就像标准字符串方法一样,但我更愿意给它一个更明确的名称,以便您检查的内容一目了然......)




