如果找到,该方法List<T>.IndexOf()返回整个List中第一次出现的项的从零开始的索引; 否则,-1.
我看到了它之间的平行,以及我刚刚在Code Complete中阅读的内容,它告诉我"避免隐藏含义的变量".
例如:变量pageCount中的值可能表示打印的页数,除非它等于-1,在这种情况下它表示发生了错误.
好吧,我不知道意思是否是"隐藏"的,因为它的记录足够清楚,但是null似乎比-1更好地传达了我的意思,而且.HasValue读取比> -1更好的检查.据我所知,List和Nullable类型都是在C#2.0中引入的,所以我不认为重新调整的原因int与向后兼容性有关.所以,你知道是否有原因,或者这是否是某人忘记实施的东西,我们现在必须永远忍受这个错误?
System.Collections.Generic.List可能已经在.NET 2.0中引入,并且可以为空,但-1的使用早于它. ArrayList.IndexOf(),Array.IndexOf(),String.IndexOf(),SelectedIndex一个列表框,等于是List<T>很可能是因为与现有的库一致性相同.(事实上即使是经典的VB也有这个含义,所以它甚至早于.NET 1.0)
正如@rerun指出的那样,它不仅仅是风格的一致性,它实际上是接口合同的一部分.所以给他+1.
虽然List<T>没有必须遵循脚步ArrayList并且不必执行IList,但这样做对于已经熟悉那些的程序员来说更有用.