以下是糟糕的代码.请帮助我实现我想要实现的目标,但具有良好的代码.我想要一个从基础派生的对象数组.我想在DoStuff()运行时能够在BaseClass中使用该数组.我知道我不能贬低,这不是我想要做的.我只想在派生类中设置Fields,并在基础DoStuff()中使用Fields.
public class BaseObject
{
}
public class DerivedObject : BaseObject
{
}
public class BaseClass
{
public BaseObject[] Objects;
public virtual void DoStuff()
{
// use the Objects
}
}
public class DerivedClass : BaseClass
{
public override DerivedObject[] Objects;
public override void DoStuff()
{
// Do stuff unique to the derived.
base.DoStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
你在寻找泛型?
public class BaseClass<T>
where T : BaseObject
{
public T[] Objects;
public virtual void DoStuff()
{
// use the Objects
}
}
public class DerivedClass : BaseClass<DerivedObject>
{
public override void DoStuff()
{
// Do stuff unique to the derived.
base.DoStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的T类型(泛型或参数类型)的代码字段中声明,T被约束为BaseObject或继承自类BaseObject,当DerivedClass声明时DerivedObject指定为T,因此在DerivedClass Objects字段中可以用作DerivedObject[].
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |