根据您提供的截图和描述,我猜测 转换失败的原因可能是由于 vals[1] 的值超出了 short 类型的取值范围。
在 C# 中,short 类型的取值范围为 -32,768 到 32,767,而 int 类型的取值范围为 -2,147,483,648 到 2,147,483,647。如果 vals[1] 的值超出了 short 类型的取值范围,那么使用 (short) 强制转换时就会抛出 System.OverflowException 异常。
因为short是16位的
vals数组的类型是object,此时强制转换的本质是将父类实例转换成子类的实例
那么值必须在short型的范围内才可以,不能溢出
你可以先把它强转成int,再强转成short截断多余的部分
short类型介绍
short -32,768 到 32,767 有符号 16 位整数
32为转16为可能会转换失败,反过来是ok的