Классы, наследование

298
20 сентября 2017, 09:18

Создал 2 класса. От одного наследовал другой. Вот код:

class Program
{
    static void Main(string[] args)
    {
        Manager man = new Manager("", "", 0, 0);
    }
}
class Employee
{
    public string Surname { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public Employee(string sName, string MyName, int MyAge)
    {
        Surname = sName;
        Name = MyName;
        Age = MyAge;
    }
}
class Manager : Employee
{
    public int Pay { get; set; }
    public Manager(string s, string n, int a, int p)
    {
        Surname = s;
        Name = n;
        Age = a;
        Pay = p;
    }
}

В унаследованном классе заполняю напрямую свойства из первого. Но почему то ругается на конструктор класса Manager.

Error CS7036 There is no argument given that corresponds to the required formal parameter 'sName' of 'Employee.Employee(string, string, int)'

Что то не пойму что не так?

Answer 1

В классе Employee у вас нет конструктора без параметров, так что вы должны явно указать конструктор Employee, соответствующий конструктору Manager, и передать в него параметры. Создать объект класса Employee без вызова конструктора (и, соответственно, без передачи в него параметров) не получится:

public Manager(string s, string n, int a, int p) 
    : base(s, n, a) // будет вызван Employee(string, string, int)
{
    // все свойства, кроме Pay, инициалируются в конструкторе базового типа
    Pay = p;
}
READ ALSO
Передача объекта из JS скрипта на сервер ASP.NET.MVC 5

Передача объекта из JS скрипта на сервер ASP.NET.MVC 5

Академическая задача, есть модель People и временный репозиторий наполненный фейковыми даннымиПри передачи в браузер я сериализую в JSON модель...

262
Подсчет строк в datatable с условием

Подсчет строк в datatable с условием

Есть datatable, в нем несколько колонокОдна из них "Flag"

234
Хранимая процедура из кода c# в EF(Code First)?

Хранимая процедура из кода c# в EF(Code First)?

Есть контекст данных и инициализатор данных,

304
c# oracle procedure

c# oracle procedure

Я пытаюсь получит данные из этого функции но получаю ошибку

276