[英]c# Activator.CreateInstance does not initialize vars
有Remember.cs
:
namespace Tasks
{
public class Remember : Task
{
new public string name = typeof(Remember).Name;
new public Task.Priority priority = Task.Priority.High;
}
}
Task.cs
:
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);
任務的名稱為null,優先級是Task.Priority
枚舉中可用的最低編號,而不是選定的編號(高)。
為什么Activator.CreateInstance
沒有初始化那些變量?
您正在重新聲明子類中的變量(通過new
關鍵字),它為您提供了一個獨立的變量集,而不是您的Task
類。 相反,您應該直接從Remember
類的構造函數設置Task
變量。
namespace Tasks
{
public class Remember : Task
{
public Remember()
{
name = typeof(Remember).Name;
priority = Task.Priority.High;
}
}
}
正如其他人所指出的,這與Activator.CreateInstance
無關。 使用new Remember()
時會出現相同的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.