"No overload takes 2 arguments" 但 IntelliSense 显示带有 2 个参数的重载

"No overload takes 2 arguments" but IntelliSense shows overload with 2 arguments

很抱歉,如果之前有人问过这个问题,我已经搜索过了,但找不到任何可以解答我困惑的内容。

如果我编写以下代码,我会收到编译器错误 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 所以我不明白哪里出了问题。

谁能解释为什么我会收到错误消息?

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

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