Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#Activator.CreateInstance不初始化变量_C#_.net_Createinstance - Fatal编程技术网

c#Activator.CreateInstance不初始化变量

c#Activator.CreateInstance不初始化变量,c#,.net,createinstance,C#,.net,Createinstance,有记住.cs: namespace Tasks { public class Remember : Task { new public string name = typeof(Remember).Name; new public Task.Priority priority = Task.Priority.High; } } public abstract class Task { public string name;

记住.cs

namespace Tasks
{
    public class Remember : Task
    {
        new public string name = typeof(Remember).Name;
        new public Task.Priority priority = Task.Priority.High;
    }
}
public abstract class Task
{
    public string name;
    public Task.Priority priority = Task.Priority.Low;

    public enum Priority
    {
        High = 3,
        Medium = 2,
        Low = 1,
    }
}
Task.cs

namespace Tasks
{
    public class Remember : Task
    {
        new public string name = typeof(Remember).Name;
        new public Task.Priority priority = Task.Priority.High;
    }
}
public abstract class Task
{
    public string name;
    public Task.Priority priority = Task.Priority.Low;

    public enum Priority
    {
        High = 3,
        Medium = 2,
        Low = 1,
    }
}
当我使用以下命令创建此类的实例时:

Task task = (Task)Activator.CreateInstance(typeof(Remember));
Debug.Log(task.name + " - " + task.priority);
任务名称为空,优先级是
Task.priority
enum中可用的最低数字,而不是所选数字(高)


为什么
Activator.CreateInstance
不初始化这些变量?

您正在子类中声明变量(通过
new
关键字),这将为您提供一组独立于
任务的变量。相反,您应该直接从
记住
类的构造函数中设置
任务
变量

namespace Tasks
{
    public class Remember : Task
    {
        public Remember()
        {
            name = typeof(Remember).Name;
            priority = Task.Priority.High;
        }
    }
}

正如其他人指出的,这与
Activator.CreateInstance
无关。当您使用
new memory()

时,您会得到相同的行为。您为什么认为这与
Activator.CreateInstance
有关?您应该在
Task=new memory()中看到同样的情况