我想知道以下陈述是否会为参考类型返回不同的结果,或者它们是否相同?
如果它们相同,你是否总能使用默认值(T),在这个例子中,如果目的是输出默认值T?:
if (typeof(T).IsValueType || typeof(T) == typeof(String))
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}
Run Code Online (Sandbox Code Playgroud)
TA!
vcs*_*nes 18
它们完全不同.
default(T),何时T是引用类型,将始终如此null.Activator.CreateInstance<T>()将使用默认构造函数(如果存在)创建该类型的新实例,否则抛出MissingMethodException.