Полагаю, исключение не имеет значения, и, возможно, оно было сгенерировано до того, как код достигнет Cast<int[]>()
, но я вижу, что даже код может достигать Cast<int[]>
, есть ошибка InvalidCastException
.
Оператор - это трюк с компилятором.
int[] array = new Data();
Вышеописанное работает, потому что компилятор заменяет правый операнд =
вызовом метода для метода оператора.
int[] array = Data.op_Implicit(new Data());
Когда вы используете Cast<T>
, у вас нет компилятора, который помог бы вам в выполнении вышеизложенного, поэтому оператор вообще не будет вызываться.
Чтобы иметь возможность привести, вам нужно использовать метод Select
и явное приведение как это:
int[][] array = list.Select(x => (int[])x).ToArray();