一尘不染

默认的程序化等效项(类型)

c#

我正在使用反射来遍历Type的属性并将某些类型设置为其默认值。现在,我可以对类型进行切换并default(Type)显式设置,但我宁愿一行执行。是否有程序等效的默认值?


阅读 258

收藏
2020-05-19

共1个答案

一尘不染

  • 如果是值类型,请使用Activator.CreateInstance,它应该可以正常工作。
  • 使用引用类型时,只需返回null

    public static object GetDefault(Type type)
    {
    if(type.IsValueType)
    {
    return Activator.CreateInstance(type);
    }
    return null;
    }

在较新的.net版本(例如.net标准)中,type.IsValueType需要编写为type.GetTypeInfo().IsValueType

2020-05-19