相关疑难解决方法(0)

为什么将类型对象的动态类型转换为抛出空引用异常的对象?

我有以下功能:

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;
}
Run Code Online (Sandbox Code Playgroud)

当我用以下方式调用它时,

object a = new object();
object v = TUtils.TryGetArrayValue<object>(new object[] { a }, 0);
Run Code Online (Sandbox Code Playgroud)

(T)boxed 抛出空引用异常.

除了"对象"之外,我放在那里的任何其他类型,它完全正常.
任何想法是什么,为什么它抛出异常?

编辑:我使用动态的原因是为了避免在转换类型时出现异常,例如:

double a = 123;
int v = TUtils.TryGetArrayValue<int>(new object[] { a }, 0);
Run Code Online (Sandbox Code Playgroud)

.net c# dynamic nullreferenceexception

62
推荐指数
3
解决办法
2131
查看次数

标签 统计

.net ×1

c# ×1

dynamic ×1

nullreferenceexception ×1