【发布时间】:2015-03-01 17:49:53
【问题描述】:
我对 C# 还是很陌生,我一直在拼命想弄清楚如何实现与从派生类返回相同值的实例和静态属性相关的某种设计模式。似乎有一些限制可以防止这种情况发生,所以我想解释一下我的问题,看看是否有人对如何解决这个问题有想法。
public class Resource {
protected static float s_unitMass = 1.0f;
protected static string s_name = "<Resource>";
public int quantity;
// Class Convenience
static public float GetUnitMass() {
return s_unitMass;
}
static public string GetName() {
return s_name;
}
// Instance Convenience
virtual public float totalMass {
get { return s_unitMass * quantity; }
}
virtual public float unitMass {
get { return s_unitMass; }
}
virtual public string name {
get { return s_name; }
}
}
public class Iron : Resource {
new protected static s_unitMass = 2.0f;
new protected static s_name = "Iron";
}
这段代码非常不工作(总是返回基类 Resource 的值),但我这样写是为了表明我希望做什么......有一个可以被两者引用的值:
string name = Iron.GetName();
float unitMass = Iron.GetUnitMass();
和
Iron iron = new Iron();
string name = iron.name;
float unitMass = iron.unitMass;
float totalMass = iron.totalMass;
【问题讨论】: