2011-03-24 91 views

回答

9

你可以为实例调用基类的构造函数从子类的构造函数这样

public readonly int MyInt; 

protected TheBaseClass(int myInt) 
{ 
    this.MyInt = myInt; 
} 

构造函数在子类:

public TheChildClass() : base(42) 
{ 
} 

public TheChildClass(int i) : base(i) 
{ 
} 
+0

是的,这是正确的模式;)。注意:子类也可以是抽象的。 – Abel 2011-03-24 14:18:48

+0

Aliostad击败了我,但我也留下了这个答案,因为它是一个小的变体,您可以使用子类构造函数的参数调用基类构造函数。 – Nailuj 2011-03-24 14:19:30

+0

你可以扩展它,并像这样传播参数化的ctor:'public TheChildClass(int i):base(i){...}' – Abel 2011-03-24 14:22:48

5

abstract class can have constructor。

public abstract class MyAbstract 
{ 

    protected readonly string SomeField; 

    public MyAbstract() 
    { 
     SomeField = "Some"; 
    } 
} 

public abstract class MyInheited 
{ 


    public MyInheited(): base() 
    { 
    } 
} 

如果我是你,我将有场不是只读保护领域但公开为公共只读属性

+0

为什么?具有'只读'字段的完全有效的理由。例如。想要在服务层的API中隐藏DbContext对象。 – Mardoxx 2017-06-15 21:42:18

2

抽象类可以有一个构造函数,它们根本无法启动。在基类

只读字段和构造函数:

相关问题