-5

我有一个字符串

String input = "nbfs;jlt;\"";

有了这个字符串,我使用 .Contains<>()

if (input.Contains<String>("nbfs;jlt;"))
{
    Console.WriteLine("True");
}

 if (input.Contains("nbfs;jlt;"))
    {
        Console.WriteLine("True");
    }

不起作用。为什么上面的 if 语句返回 false?

4

4 回答 4

3

input.Contains<String>("nbfs;jlt;")期待字符串的枚举。

采用:input.Contains("nbfs;jlt;")

编辑
作为对许多评论的回应,该.Contains<T>方法不会在标准字符串上编译:

string input = "nbfs;jlt;";
input.Contains<String>("nbfs;jlt;") // this will never compile

.Contains<T>方法需要某种类型的可枚举输入,例如以下编译:

input.Select( x => x.ToString() ).Contains<String>( "nbfs;jlt;" )

鉴于 OP 说代码可以编译,我建议打开一个新的控制台项目并从头开始。并输入所有内容,不要复制/粘贴。

附带说明:当您从文件复制/粘贴时,可能会隐藏一些奇怪的实体字符,因此这可能是 Contains 方法不适用于您的字符串的一个原因。

编辑 2
这将根据您的示例字符串编译并返回 true。将其复制/粘贴到控制台应用程序中,并确保不要在控制台应用程序中包含除默认程序集以外的任何程序集:

string input = "nbfs;jlt;\"";

bool isContained = input.Contains( "nbfs;jlt;" );

Console.WriteLine( isContained );
于 2012-12-13T21:02:19.887 回答
2

.Contains<String>除非您使用某种扩展方法,否则这将无法编译?这可能是您不知道的自定义类吗?

你应该只使用字符串的内置包含input.Contains("string");

于 2012-12-13T20:57:51.877 回答
0

只需删除<String>并使用:if (input.Contains("nbfs;jlt;"))

于 2012-12-13T21:03:11.660 回答
0

String.Contains 不是泛型方法,因此您不需要指定类型参数。

试试这个。

if (input.Contains("nbfs;jlt;"))
{
    Console.WriteLine("True");
}
于 2012-12-13T21:03:41.410 回答