어쩌면 bizare 일을하고 싶지만, .Net의 하한> 0 인 배열을 만들어야합니다.. 하한> 0 인 Net 배열.
Array.CreateInstance(typeof(Object), new int[] {2}, new int[] {9});
원하는 결과 (하한이 9로 설정된 객체의 배열)를 생성합니다. 그러나 생성 된 배열 인스턴스는 더 이상 Object[]
을 기다리고있는 다른 메서드로 전달할 수 없습니다.
System.Object[*]
은 System.Object[]
으로 캐스트 할 수 없습니다. 배열 유형에서이 차이점은 무엇이며이를 어떻게 극복 할 수 있습니까?
편집 : 실패 테스트 코드 =
Object x = Array.CreateInstance(typeof(Object), new int[] {2}, new int[] {9});
Object[] y = (Object[])x;
는 "유형의 개체를 캐스팅 할 수 없습니다 '으로 System.Object [*]' '으로 System.Object []'입력합니다."
또한 여러 차원을 사용하는 경우이 방법 이 작업을 않습니다 싶습니다 : 잘 작동
Object x = Array.CreateInstance(typeof(Object), new int[] {2,2}, new int[] {9,9});
Object[,] y = (Object[,])x;
합니다.
불행히도 @PaulV는 [자신의 오래된 블로그 게시물을 삭제] (http://panopticoncentral.net/2011/03/29/external-requests-versus-internal-requirements/)하기로 결정 했으므로 이제는 죽은 링크입니다. –
@MarkHurd 인터넷 웨이백 머신을 구출하십시오! [VB가 배열의 0이 아닌 하한을 지원하지 않는 이유는 무엇입니까?] (http://web.archive.org/web/20100306164952/http://www.panopticoncentral.net/articles/950.aspx) – Xantham
@Xantham 예, PaulV는 [실수를 깨달았습니다.] (http://www.panopticoncentral.net/2012/10/02/undoing-some-of-the-damage/) 이러한 기사를 복원했습니다. [0이 아닌 하한 배열 동전의 다른면]] (http://www.panopticoncentral.net/2004/03/17/non-zero-lower-bounded-arrays-the-other-side-of-the-coin/). –