I came across a lot of code in our company codebase with the following structure
class Base
{
public Base (var a, var b)
{
base_a = a;
base_b = b;
}
var base_a;
var base_b;
}
class Derived:Base
{
publc Derived (var a,b,c,d): base (a,d)
{
der_c = c;
der_d = d;
}
var der_c;
var der_d;
var der_e;
}
class Ref
{
Base _ref;
public Ref(var a,b,c,d)
{
_ref = new Derived (a,b,c,d)
}
public void method()
{
_ref.der_e = 444; // won't compile
}
}
什么是初始化der_e的正确方法?引用基类并为_ref使用对象派生类有什么好处?只是使用基类引用可以容纳多个派生类对象的事实?如果是这样的话,派生类的所有成员变量都应该在构造过程中初始化(像这样:_ref = new Derived(a,b,c,d))。如果我想稍后在方法中初始化_ref.der_e怎么办?我知道我可以做到这一点(var cast_ref = _ref为Derived; cast_ref.der_e = 444),但这种看起来并不是最佳做法。拥有这样一个结构的想法是什么,以及在派生类对象构建之后初始化其成员的正确性是什么?使用基类引用对象初始化派生类成员变量
你给不会在所有的编译代码 - 你不能使用'var'参数或字段(除非实际上有一个名为'var'的类)。请给出一个*逼真的例子 - 理想情况下更短,遵循.NET命名约定,并且格式更好。 –