"没有重载需要2个参数"但IntelliSense显示2个参数的重载

时间:2018-03-07 12:51:20

标签: c# visual-studio intellisense

对不起,如果以前曾经问过这个问题,我已经搜索过了,但找不到任何可以解决我困惑的事情。

如果我编写以下代码,我收到编译错误No overload for method 'Contains' takes 2 arguments,但IntelliSense建议有一个带有2个参数的重载(screenshot here):

string s = "Hello";
if (s.Contains('h', StringComparer.OrdinalIgnoreCase))
{
    Console.WriteLine("True!");
}

我传递了一个 char 作为第一个参数,而StringComparer实现了IEqualityComparer所以我没有弄错。

任何人都可以解释为什么我会收到错误吗?

1 个答案:

答案 0 :(得分:1)

StringComparer使用类型参数字符串实现IEqualityComparer<string>,但期望参数为IEqualityComparer<char>,类型参数为char。 这些类型仍然不兼容。

阅读有关泛型类型参数的内容: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-type-parameters