“没有重载需要 2 个参数”,但 IntelliSense 显示有 2 个参数的重载

Joh*_*Man 5 c# intellisense visual-studio

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

如果我编写以下代码,我会收到编译器错误No overload for method 'Contains' takes 2 arguments,但 IntelliSense 表明存在一个需要 2 个参数的重载(此处的屏幕截图):

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

我传递一个char作为第一个参数并StringComparer实现IEqualityComparer,所以我不知道出了什么问题。

谁能解释一下为什么我会收到错误?

Ash*_*Saf 3

StringComparerIEqualityComparer<string>使用 string 类型参数实现,但预期参数IEqualityComparer<char>使用 char 类型参数。类型仍然不兼容。

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

  • 但为什么它没有说我的论点是错误的呢?相反,它说该方法不存在。我想这就是让我困惑的地方 (4认同)