c# - C# 中的抽象构造函数

标签 c# .net constructor abstract-class

<分区>

Possible Duplicate:
Why can’t I create an abstract constructor on an abstract C# class?

为什么我不能像这样声明类的抽象构造函数:

public abstract class MyClass {
    public abstract MyClass(int param);
}

最佳答案

构造函数只适用于定义它们的类,即不被继承。使用基类构造函数(您必须调用其中之一,即使只是自动调用默认构造函数)但不会被派生类覆盖。您可以在抽象基类上定义一个构造函数——它不能直接使用,但可以通过派生类调用。您不能做的是强制派生类实现特定的构造函数签名。

为了为所有派生类定义一些通用的设置代码,定义一个构造函数(通常是 protected )是完全合理的。当抽象类提供一些依赖于此设置的其他默认行为时,尤其如此。例如:

public abstract class Foo
{
     public string Name { get; private set; }

     protected Foo( string name )
     {
         this.Name = name;
     }
}

public class Bar : Foo
{
     public Bar() : base("bar")
     {
        ...
     }
}

关于c# - C# 中的抽象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299037/

相关文章:

c# - 使用 System::DateTime 参数调用 C++/CLI 方法需要 'ValueType' 作为参数?

c# - Linq To Entities 在 where 子句中进行错误的 SQL 转换

c# - 将 WPF DataGrid ItemsSource 绑定(bind)到自定义 Table 对象的方法 IEnumerable<TableRow> GetRows()?

c# - WinForms 调用/BeginInvoke

.net - 多列列表框

c++ - 如何在另一个类中构造一个类? (简单代码)

javascript - 下拉.js :186 Uncaught TypeError: u is not a constructor returning when I click on the dropdown button

c# - 无法加密 Azure CloudFile。能够加密 Azure Blob

c# - 获取类层次结构中的所有基本属性声明

java - 使用泛型处理构造函数中的类型删除