gpt4 book ai didi

c# Activator.CreateInstance 不初始化变量

转载 作者:行者123 更新时间:2023-11-30 13:54:05 25 4
gpt4 key购买 nike

拥有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);

任务名称为空,优先级是 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() 时,您会得到相同的行为。

关于c# Activator.CreateInstance 不初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46631924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com