Я был удивлен, узнав, что конструктор без параметров в базовом классе вызывается в любое время, когда я вызываю какой-либо конструктор в производном классе. Я думал, что для этого был : base()
, чтобы явным образом вызвать базовый конструктор, если и когда захочу.
Как я могу запретить вызов базового конструктора при создании экземпляра производного класса?
using System;
namespace TestConstru22323
{
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer("Jim", "Smith");
Customer c = new Customer();
Console.WriteLine(customer.Display());
Console.ReadLine();
}
}
public class Person
{
public Person()
{
Console.WriteLine("I don't always want this constructor to be called. I want to call it explicitly.");
}
}
public class Customer : Person
{
private string _firstName;
private string _lastName;
//public Customer(string firstName, string lastName): base() //this explicitly calls base empty constructor
public Customer(string firstName, string lastName) //but this calls it anyway, why?
{
_firstName = firstName;
_lastName = lastName;
}
public string Display()
{
return String.Format("{0}, {1}", _lastName, _firstName);
}
}
}