Activator.CreateInstance(type, args) replaces null with default value for non-nullable constructor parameter

622 Views Asked by At

Why does this code compile and run when param2 is non-nullable? I can't find anything in the docs saying that a default value is used when null is passed to a non-nullable constructor parameter via Activator.CreateInstance(...)?

    [Test]
    public void Test()
    {
        Class @class = (Class)Activator.CreateInstance(typeof(Class), "param1value", null);
        //@class.Param1 = "param1value"
        //@class.Param2 = 0
    }

    public class Class
    {
        public Class(string param1, int param2)
        {
            Param1 = param1;
            Param2 = param2;
        }
        public string Param1 { get; }
        public int Param2 { get; }
    }
0

There are 0 best solutions below