Using List.Contains method to find a string returns false but manual comparison return true
我有一个细绳列表,我正在尝试确定其中一根是否与针串匹配。该字符串列表包含第一个索引处的指针,我的代码具有以下行为:
1 2 | listOfStrings.Contains(needle); // return false listOfStrings[0] == needle; // return true |
为什么contains方法的行为与默认比较be a havior不同,我应该修改什么以使它具有相同的havior?
为了更深入地了解我所面临的问题,我正在处理来自WinForm文本框的字符串。它们表示输入路径和目标文件夹。
1 2 3 4 5 6 7 8 9 10 11 12 | if (!destinationPath.EndsWith("\")) { destinationPath +="\"; } List<string> inputDirectories = new List<string>(inputPaths.Length); foreach (string path in inputPaths) { inputDirectories.Add(Path.GetDirectoryName(path).ToLower()); } bool comparison1 = inputDirectories[0] == Path.GetDirectoryName(destinationPath.ToLower()); // return true bool comparison2 = inputDirectories.Contains(Path.GetDirectoryName(destinationPath.ToLower())); // return false |
你还没有说你的列表是什么类型,但是如果它是一个
要理解这一点,请尝试运行以下代码:
1 2 3 4 5 6 7 | string s1 ="A"; string s2 ="AB"; s1 +="B"; Console.WriteLine(s1 == s2); // True Console.WriteLine((object)s1 == (object)s2); // False |
与字符串相比,
如果您已经在使用