Dan*_*dez 3 c# inheritance constructor
我有一个抽象类Parent
和一个派生类Child
。我知道我可以通过以下方式Parent
在 的构造函数内调用 的构造函数:Child
abstract class Parent
{
protected int i;
protected Parent(int i)
{
this.i = i;
}
}
class Child : Parent
{
public Child(int i) : base(i)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不想Parent
立即将一些参数传递给构造函数。我想执行一些计算,然后Parent
使用此类计算的结果作为输入参数来调用的构造函数。代码“看起来”是这样的:
public class Child : Parent
{
public Child(int i)
{
int calculation = i * 2; // Complicated operation
base(calculation); // This line will break
}
}
Run Code Online (Sandbox Code Playgroud)
第二个片段不是有效的 C# 代码。有没有办法推迟对Parent
的构造函数的调用以模仿第二个代码片段中表达的情绪?
假设您可以直接访问属性,这将执行相同的技巧
abstract class Parent
{
protected int i;
protected Parent()
{
//default constructor
}
}
class Child : Parent
{
public Child(int i)
{
Int calculation = i * 2
base.i = calculation
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果由于对属性的访问受到限制而无法做到这一点,我个人的偏好是将计算逻辑外包到单独的函数中并调用基类,如下所示:
abstract class Parent
{
protected int i;
protected Parent(int i)
{
this.i = i;
}
}
class Child : Parent
{
public Child(int i) : base(Child.dosomework(i))
{
}
public static int dosomework(int i){
int calculation = i * 2
return calculation
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5965 次 |
最近记录: |