在没有实例的情况下获取字段类型默认值



我想获得字段类型的默认值。我希望拥有以下代码(当然不编译(:

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)
        }
    }

有什么方法可以做到吗?

首先您需要反思才能获取适当的字段:

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

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

var type = field.FieldType

最后,您可以获得默认值的类型,例如使用此方法,来自默认值等效的(类型(:

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

最新更新