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

ram*_*ash 1 c#

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

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

有什么办法吗?

Him*_*ere 5

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

var field = typeof(foo).GetField("intf");
Run Code Online (Sandbox Code Playgroud)

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

var type = field.FieldType
Run Code Online (Sandbox Code Playgroud)

最终,您可以获取类型default-value,例如,使用以下程序化等同于default(Type)的方法

var default = type.IsValueType ? Activator.CreateInstance(type) : null;
Run Code Online (Sandbox Code Playgroud)