在测试面向对象继承时,当尝试运行时出现“没有对应所需形式参数的参数”错误。

21 浏览
0 Comments

在测试面向对象继承时,当尝试运行时出现“没有对应所需形式参数的参数”错误。

这个问题已经有了答案

在C#中调用基类构造函数

我只是试图理解C#中的继承如何工作。(即使我认为我已经理解了,我想尝试做一些实际的事情来理解)

所以我一直在尝试创建一个具有属性和构造函数的类,同时另一个类继承了这个类。但是我得到了一个错误,我似乎真的不知道为什么。

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp2
{
    public class Test
    {
        public int testing { get; }
        public Test(int p)
        {
            this.testing = p;
        }
    }
    public class Test2 : Test {
    }
}

There is no argument given that corresponds to the required formal parameter 'p' of 'Test.Test(int)' for line 15

有人能帮我理解发生了什么以及为什么会出现错误吗?谢谢。

admin 更改状态以发布 2023年5月23日
0
0 Comments

简短说明:构造函数不被继承。

更详细的解释:您的Test2类隐式地具有类似于以下的构造函数:

public Test2() : base()
{
}

... 因为您没有在Test2中声明任何构造函数。如果您在Test2声明任何构造函数,编译器就不会尝试提供隐式的构造函数。(但您的构造函数需要调用base(...)提供p的值。

所以您可能需要:

public class Test2 : Test
{
    public Test2(int p) : base(p)
    {
    }
}

0