请帮助我理解这段代码:
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
......
}
答案 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
的类。