C#中Array.IndexOf返回-1问题求助:预期索引为2却始终获取-1
问题解决:Array.IndexOf返回-1而非预期索引2
问题根源
你的数组geburtsjahr是short[]类型,但你查找的是int类型的1966。Array.IndexOf采用严格类型匹配逻辑——只有当查找值的类型和数组元素类型完全一致时,才会匹配成功。你之前把1966转成int,相当于在short数组里找int值,自然找不到,返回-1。
解决方案
将查找值转换为short类型,而非int:
修正后的代码
var geburtsjahr = new short[4] { 1998, 1992, 1966, 2006 }; // 现在会返回正确的索引2 int index = Array.IndexOf(geburtsjahr, (short)1966); Console.WriteLine(index);
更简洁的写法
C#里可以用后缀s直接表示short类型的字面量,代码可以简化为:
int index = Array.IndexOf(geburtsjahr, 1966s);
内容的提问来源于stack exchange,提问作者sumeyye
相关产品推荐
相关产品推荐

