对于fb数组列,Firebird rdr.Read()返回一个对象女巫在我的情况下System.Int32 [*](基于非零的整数数组),如何将其拆箱成为理智的东西? 连接器没有任何rdr.GetZeroBasedArray()或rdr.GetUsableArray()方法。
提前......
答案 0 :(得分:4)
C#不支持[*]
- 样式(非零的一维)数组。试图转换为int[]
会抛出异常。
您唯一的选择是转换为System.Array
,然后使用这些方法对其进行修改:
Array.GetValue
代替array[i]
Array.SetValue
代替array[i] = x;
或者,当然,您始终可以使用Array.GetLength
查找数组的长度,实例化相同长度的标准int[]
,然后使用Array.Copy
复制数据过度。然后,您可以正常使用array[i]
,但请注意,您现在正在单独运行。
P.S。正如已经指出的那样, unbox 是错误的词。装箱/拆箱仅用于值类型,但数组始终是引用类型(即使值类型的数组也是引用类型)。您正在寻找的是一个演员。 Array
变量将包含与object
变量相同的对象的引用。