如何取消装入System.Int32 [*]数组

时间:2011-01-27 21:33:50

标签: c# firebird

对于fb数组列,Firebird rdr.Read()返回一个对象女巫在我的情况下System.Int32 [*](基于非零的整数数组),如何将其拆箱成为理智的东西? 连接器没有任何rdr.GetZeroBasedArray()或rdr.GetUsableArray()方法。

提前......

1 个答案:

答案 0 :(得分:4)

C#不支持[*] - 样式(非零的一维)数组。试图转换为int[]会抛出异常。

您唯一的选择是转换为System.Array,然后使用这些方法对其进行修改:

或者,当然,您始终可以使用Array.GetLength查找数组的长度,实例化相同长度的标准int[],然后使用Array.Copy复制数据过度。然后,您可以正常使用array[i],但请注意,您现在正在单独运行。

P.S。正如已经指出的那样, unbox 是错误的词。装箱/拆箱仅用于值类型,但数组始终是引用类型(即使值类型的数组也是引用类型)。您正在寻找的是一个演员Array变量将包含与object变量相同的对象的引用。