C# 未提供必须形参对应的实参

这个问题是在写观察者模式中遇到的一个问题。

具体的代码可以到《设计模式(十五)之观察者模式》中下载,下边只是部分代码。

我在抽象类中定义了构造函数,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Observer
{
    /// 
    /// 博客抽象类,有订阅功能
    /// 
    public abstract class blog
    {
        /// 
        /// 订阅者列表
        /// 
        public List observerList = new List();
        /// 
        /// 博客标题
        /// 
        public string blogTitle = "";
        /// 
        /// 博客作者
        /// 
        public string blogAuthor = "";
        /// 
        /// 构造函数
        /// 
        /// 博客标题
        /// 博客作者
        public blog(string title,string author)
        {
            this.blogAuthor = author;
            this.blogTitle = title;
        }
    }
}

大家注意,我这个构造函数中是有参数的。

接下来,我写了一个类来继承他,最开始,我是这样写的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Observer
{
    public class MyBlog : blog
    {
        public MyBlog(string title,string author)
        {
 
        }
    }
}

报错;

C# 未提供必须形参对应的实参_第1张图片

去网上找了一下:得到的结果基本上都是:

父类有了带参数的构造函数,子类的构造函数可以不和父类的构造函数一样,但是,如果你的父类定义了带参数的构造函数同时没有无参重载的情况下,那么在子类中,你必须对父类的带参数的构造进行赋值,也就是实参!

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Observer
{
    public class MyBlog : blog
    {
        public MyBlog(string title,string author) : base(title,author)
        {
 
        }
    }
}

解决方法就是,在子类的构造函数后加上base关键字及对应父类构造函数需要的参数。

以上就是所有的解决方法。

有好的建议,请在下方输入的评论。

C# 未提供必须形参对应的实参_第2张图片

 

你可能感兴趣的:(开发语言,c#)