Я был удивлен, узнав, что конструктор без параметров в базовом классе вызывается в любое время, когда я вызываю какой-либо конструктор в производном классе. Я думал, что для этого был : 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);
        }
    }
}
