"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
很抱歉,如果之前有人问过这个问题,我已经搜索过了,但找不到任何可以解答我困惑的内容。
如果我编写以下代码,我会收到编译器错误 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