我听说私有(private)构造函数会阻止从外部世界创建对象。
当我有代码时
public class Product
{
public string Name { get;set;}
public double Price {get;set;}
Product()
{
}
public Product(string _name,double _price)
{
}
}
这里我还可以声明一个公有的构造函数(参数),这不会破坏私有(private)构造函数的目的吗?我们什么时候需要在代码中同时使用私有(private)和公共(public)构造函数(参数)?
我需要一个详细的解释。
最佳答案
您使用您描述的模式的原因是当您想要控制如何对象被实例化时。
例如,在您的示例中,您说创建产品的唯一 方法是指定其名称和价格。当然,这是针对外部世界的。您也可以使用其他访问修饰符来做类似的事情,这会产生不同的含义,但这一切都归结为控制您希望对象实例化的方式以及谁将执行此操作。
如果你想完全阻止对象创建,你必须将所有构造函数设为私有(private)(或 protected )。这将强制从其自身(或继承的类)内部创建对象。
此外,正如 Matti 在下面的评论中指出的那样,当您定义一个参数化的构造函数时,您不需要指定一个私有(private)默认构造函数。在这一点上它是隐含的。
关于c# - 私有(private)构造函数和公有参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640191/