List<string> 对象 IndexOf 返回 -1。如何?

List<string> object IndexOf returning -1. How?

这让我很莫名其妙。我的 List<string> 对象的 IndexOf(string) 方法以某种方式返回 -1,即使列表中的值很清楚。

protected readonly List<string> validPrefixes = new List<string>() { "01", "02", "03", "FE", "E1", "E2", "E3" };

string prefix 是“01”

validPrefixes 索引 0 为“01”。

indexOf 为 -1。嗯...怎么样?

嗯,我不确定为什么,但看起来我的调试器在骗我。我相信发生的事情是 validPrefixes 中的值需要全部小写,因为我之前在我的代码中使用 ToLower() 方法影响了 string addr 变量。

出于某种原因,我的调试器似乎以某种方式混合了循环的迭代。我只能通过使用 string.ToCharArray() 方法将变量分配给 char[] 来判断这是发生了什么。

("01").ToCharArray() 返回 ['0','1']prefix.ToCharArra() 返回 ['f','e']

不知何故,调试器告诉我 prefix 的值是 "01"prefix.ToCharArray() 的值是 ['f','e']。后者是应该来自不同循环迭代的值。

因为我检查的是 "FE" 而不是 "fe",所以我的代码无法正常工作,但我的调试器并没有准确地告诉我这一点。

我正在使用 Xamarin iOS Build Host 在我的 Windows PC 上使用 Xamarin 为 iOS 开发。过去,通过这样的开发,我遇到过一些奇怪的事情,尤其是在调试和断点方面。所以我要归咎于 Xamarin Build Host。

感谢@Amit 和@DavidW 帮助我得出这个结论。