using System;
public class Fuse
{
    private string _name;
    public Fuse(string name) { this._name = name; }
}
public class QuickFuse : Fuse
{
}
//编译命令
//csc /t:library 14-1.cs
//请高手解释下

解决方案 »

  1.   

    using System;
    public class Fuse
    {
        private string _name;
        public Fuse() : this(null)
        {
        }
        public Fuse(string name) 
        { 
            this._name = name; 
        }
    }public class QuickFuse : Fuse
    {
    }
      

  2.   

    using System;
    public class Fuse
    {
        private string _name;
        public Fuse(string name) { this._name = name; }
        public Fuse(){}
    }
    public class QuickFuse : Fuse
    {    
    }
      

  3.   

    如果类没有构造函数.在编译时会生成一个默认的不带参数的构造函数编译时会试图为QuickFuse创建默认构造函数
     public QuickFuse():base()
    {
    }
    所以会失败..
    也可以改为using System;
    public class Fuse
    {
        private string _name;
        public Fuse(string name) { this._name = name; }}
    public class QuickFuse : Fuse
    {
        public QuickFuse() :base(null)
        { }
    }
    也能通过编译
      

  4.   

    这个题目是C#设计模式的14-1问
    书上这么解答的:
    "QuickFuse默认的构造函数是不带参数的,另外,在默认情况下,一个类的构造函数可以调用基类中不带参数的构造函数。然而,这个Fuse()构造函数需要接受一个String类型的参数,这意味着编译器无法提供一个默认的构造函数。"
    为什么提供了一个带参数的构造函数,就不提供无参的构造函数了。
      

  5.   

    如果类没有构造函数.在编译时会生成一个默认的不带参数的构造函数编译时会试图为QuickFuse创建默认构造函数
     public QuickFuse():base()
    {
    }
    所以会失败..
    也可以改为using System;
    public class Fuse
    {
        private string _name;
        public Fuse(string name) { this._name = name; }}
    public class QuickFuse : Fuse
    {
        public QuickFuse() :base(null)
        { }
    }
    也能通过编译