У меня есть следующая функция:
public static T TryGetArrayValue<T>(object[] array_, int index_)
{
... //some checking goes up here not relevant to question
dynamic boxed = array_[index_];
return (T)boxed;
}
Когда я вызываю ее следующим образом,
object a = new object();
object v = TUtils.TryGetArrayValue<object>(new object[] { a }, 0);
(T) boxed
генерирует исключение нулевой ссылки.
Любой другой тип, который я добавляю, кроме "object", работает отлично.
Есть идеи, что это такое и почему это исключение?
Редактировать: Причина, по которой я использую динамическую, заключается в том, чтобы избежать исключений при преобразовании типов, например:
double a = 123;
int v = TUtils.TryGetArrayValue<int>(new object[] { a }, 0);