因此,假设我有一个具有这些属性的 Clone 对象。克隆可能具有不同的质量或名称,具体取决于加载它的文件,但这些值在运行时永远不会改变。但是,克隆实例具有一些自主权和属性,每个实例都会发生变化,因此它们不能都是同一个实例。
public class Clone
{
public float Mass { get; protected set; }
public string Name { get; protected set; }
public Clone(string filePath)
{
Name = //read name from file
Mass = //read mass from file
}
}
现在,我想知道的是,这样做的好处和缺点(如果有的话)是什么:
public class CloneInfo
{
public float Mass;
}
public static class Database
{
public static Dictionary<string, CloneInfo> Lookup;
[...load whole dictionary from files...]
}
public class Clone
{
public string Name { get; protected set; }
public float Mass { get { return Database.Lookup[Name].Mass; } }
public Clone(string name)
{
Name = name;
}
}
使用这种“重定向”方法,我保留了 Clone.Mass 的简单语法,但不必为每个实例存储一个 Mass 值。既然我有成千上万的克隆人四处游荡,这是一件好事。由于语法,我主要对“重定向”感兴趣。我意识到每次我想要一个特定克隆的质量时,我都可以简单地手动进行数据库查找,但我宁愿保持类的使用简单明了。这有什么缺点吗?该属性会比在静态数据库中直接查找要慢吗?该属性是否占用克隆实例中的任何空间?
或者,也许,这是一个用例 C# 已经有一个我不知道的答案?似乎在许多实例中常见的一次性写入属性可能在这种美丽的语言中的某个地方。