C#示例语法问题

时间:2009-12-10 19:27:47

标签: c# wpf syntax methods

请帮助我理解这段代码:

       protected Customer()
    {
    }

在以下类中(来自示例WPF MVVM应用程序的Model类):

    public class Customer : IDataErrorInfo
{
    #region Creation

    public static Customer CreateNewCustomer()
    {
        return new Customer();
    }

    public static Customer CreateCustomer(
        double totalSales,
        string firstName,
        string lastName,
        bool isCompany,
        string email)
    {
        return new Customer
        {
            TotalSales = totalSales,
            FirstName = firstName,
            LastName = lastName,
            IsCompany = isCompany,
            Email = email
        };
    }

    protected Customer()     // it is what I asked about
    {
    }

    #endregion // Creation
......
}

5 个答案:

答案 0 :(得分:4)

protected Customer() { }是一个构造函数,是一种在从类中实例化对象时自动调用的特殊方法。键入Customer c = new Customer()时,允许构造函数在运行时分配并重置内存后初始化该实例。 protected关键字表示只允许类Customer或其后代中的代码使用该特定构造函数实例化所述类。

答案 1 :(得分:3)

您指向的代码段是constructor。无论何时在运行时创建类的实例,它都可以(可能)自动调用。

在这种情况下,它标有protected keyword。这意味着只有所有者类加上任何派生类(即从中继承的类)才能访问它。

通过查看代码,类中CreateNewCustomer()静态方法的两个版本创建类的实例,从而调用构造函数。通过使构造函数受到保护,代码保证类保留对实例化的独占控制;这意味着类(或其后代类)之外的其他代码都不能创建此类的实例。

答案 2 :(得分:2)

构造函数受到保护,因此只有静态创建方法才能实际实例化该类。

答案 3 :(得分:1)

这意味着您的类的构造函数具有“受保护”访问权限,这意味着只有此类或子类的成员才能调用它。实际上,这意味着要么使用静态方法来创建此类的实例,要么使用另一个构造函数(可能在派生类中)委托给此构造函数。

答案 4 :(得分:1)

在构造函数上使用protected关键字只允许实例化Customer对象本身(如静态工厂方法)和任何派生自Customer的类。