.Net数组,下限> 0

DAC*_*DAC 11 .net arrays

虽然想要做的事情可能很奇怪,但我需要在.Net中创建一个下限> 0的数组.这开始似乎是可能的,使用:

Array.CreateInstance(typeof(Object), new int[] {2}, new int[] {9});
Run Code Online (Sandbox Code Playgroud)

生成所需的结果(下限设置为9的对象数组).但是,创建的数组实例不能再传Object[]递给其他方法,期望给出一个错误,说明:

System.Object[*]不能铸成一个System.Object[].数组类型有什么不同,我该如何克服这个?

编辑:测试代码=

Object x = Array.CreateInstance(typeof(Object), new int[] {2}, new int[] {9});
Object[] y = (Object[])x;
Run Code Online (Sandbox Code Playgroud)

失败的原因是:"无法将类型为'System.Object [*]'的对象强制转换为'System.Object []'."

我还想指出,这种方法DOES使用多个维度时工作:

Object x = Array.CreateInstance(typeof(Object), new int[] {2,2}, new int[] {9,9});
Object[,] y = (Object[,])x;
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.

Mar*_*ini 1

我不确定为什么不能将其作为 Object[] 传递,但是如果您只是创建一个真正的类来包装数组并在那里处理“奇怪的逻辑”,这并不容易?

如果您可以为您的类添加“智能”,您将获得使用真实参考对象的好处。

编辑:你如何投射你的数组,你能发布更多代码吗?谢谢。