私有构造函数与公参构造函数听说私有构造函数阻止了外界创建对象。当我有一个代码publicclassProduct{publicstringName{get;set;}publicdoublePrice{get;set;}Product(){}publicProduct(string_name,double_price){}}在这里我仍然可以声明A公共构造函数(参数),它不会破坏私有构造函数的目的吗?我们什么时候需要代码中的私有和公共构造函数(参数)?我需要详细说明。您想要使用您描述的模式的原因是您想要控制对象的实例化方式。例如,在您的示例中,您说创建产品的唯一方法是指定其名称和价格。当然,这是关于外面的世界。你也可以用其他访问修饰符做类似的事情,它会有不同的含义,但归根结底是控制你希望对象被实例化的方式。如果您想完全阻止对象创建,则必须将所有构造函数设为私有(或受保护)。这将强制从其自身(或它继承的类)内部创建对象。此外,正如Matti在下面的评论中指出的那样,当您定义参数化构造函数时,您不需要指定私有默认构造函数。当时就暗示了。可以将构造函数链接在一起以避免重复代码,因此拥有私有构造函数是很常见的,没有人应该在类之外调用,但每个公共构造函数都只是链接到。示例:publicclassTest{privateTest(int?a,stringb){}publicTest(inta):this(a,null){}publicTest(stringb):this(null,b){}}这里有两个公共构造函数,一个接受字符串,一个接受int,它们都链接到一个接受两个参数的公有私有构造函数。当然,您也可以使用私有构造函数从同一类构造新对象,例如,您可能希望只通过静态工厂方法提供专用构造函数:publicstaticTestCreate(){int?a=ReadConfigurationForA();字符串b=ReadConfigurationForB();返回新测试(a,b);在这里,将私有构造函数暴露给外界可能不是一个好主意,而是添加一个静态工厂方法来获取传递给构造函数的正确参数。当您只想从类本身调用构造函数时,您需要一个私有构造函数。在您的示例中,您强制调用对象在创建对象时提供2个参数。使用私有构造函数,您可以执行以下操作:publicstaticGetInstance(){returnnewYourObject();但是你除了调用无参数构造函数的对象之外什么都没有。它通常用于创建单例模式:http://www.dofactory.com/Patterns/PatternSingleton.aspx如果你想强制调用代码将值传递给构造函数以创建类的实例,你可以使用带参数的构造函数。在您的示例中,调用代码必须使用构造函数的参数版本才能创建产品。私有构造函数是一种特殊的实例构造函数。它通常用于只包含静态成员的类中。如果一个类有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(嵌套类除外)创建该类的实例。更多详情参见:http://msdn.microsoft.com/en-us/library/kcfb85a6(VS.80).aspx以上就是C#学习教程:私有参数构造函数和公有参数构造函数分享的内容如果对大家有用的话你和你需要了解更多的C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
