Хотя, возможно, это странная вещь, которую я хочу сделать, мне нужно создать массив в .Net с нижней границей> 0. Сначала это кажется возможным, используя:
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 [] '. "
Я также хотел бы отметить, что этот подход DOES работает при использовании нескольких измерений:
Object x = Array.CreateInstance(typeof(Object), new int[] {2,2}, new int[] {9,9});
Object[,] y = (Object[,])x;
Что отлично работает.