首页 > 解决方案 > 获取没有实例的字段类型默认值

问题描述

我想获取字段类型的默认值。我希望有类似下面的代码(当然不能编译):

public class foo
    {
        public int intf;
        public string strf;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(default(foo.intf)); //Expected default(int)
            Console.WriteLine(default(foo.strf)); //Expected default(string)
        }
    }

有没有办法做到这一点?

标签: c#

解决方案


首先,您需要进行反射以获得适当的字段:

var field = typeof(foo).GetField("intf");

现在您可以获得该字段的返回类型:

var type = field.FieldType

最后,您可以获得类型默认值,例如,使用与 default(Type) 等效的 Programmatic中的这种方法:

var default = type.IsValueType ? Activator.CreateInstance(type) : null;

推荐阅读