虽然想要做的事情可能很奇怪,但我需要在.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)
哪个工作正常.
我不确定为什么不能将其作为 Object[] 传递,但是如果您只是创建一个真正的类来包装数组并在那里处理“奇怪的逻辑”,这并不容易?
如果您可以为您的类添加“智能”,您将获得使用真实参考对象的好处。
编辑:你如何投射你的数组,你能发布更多代码吗?谢谢。
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |