C#构造函数关键字可以是public,也可以是private吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#构造函数关键字可以是public,也可以是private吗?相关的知识,希望对你有一定的参考价值。

一般情况下使用的是public。如果有特殊要求的情况下,可能使用private修饰。

 

如果一般常见的单例模式:

public class Singlton

private static Singleton _Instance;
provate static readonly object syslocker = new object();
//私有化构造函数
private Sinalton()


public static Singlton GetInstance()

if(_Instance == null)

lock(syslocker)

if(_Instance == null)

_Instance = new Singlton();



return _Instance;

这种形式就必须使用private将构造私有化,然后通过GetInstance()方法获得实例。这样能保存生成的实例是单一的。不允许用户使用构造函数重新构造。

 

不管怎么说,虽然我们可以对实例进行私有化,但必须有其他的静态方法来获得实例。如果不通过静态方法或静态属性来获得得实例,那么这么类就没有存在的必要了。

 

 

所以虽然可以私有化构造函数,但一般要因为对生成有一定的控制,否则最好还是使用public。或使用默认生成的。[不写构造函数时,编译器会默认编译一个]

参考技术A 可以,但private的话就不能用new来创建这个类的对象了,当然在这个类内部还是可以new的本回答被提问者采纳 参考技术B 不可以,只能用public

Java 构造函数

构造方法要可以用public, protected, private修饰,不可以有返回值,方法名与类名一致。

1.构造函数必须是public

2.构造函数必须是无返回值的,void也不行
 
3.构造函数必须是和类名一直的,方法名不按照小驼峰的规则
 
4.参数列表不同,可以构造多个构造方法,是方法的重载
 
 
例:
在如下所示的类Test中,共有()个构造方法。 
public class Test

    private int x;
    public Test()
    
        x = 35;
    
 
    public void Test(double f)
    
        this.x = (int)f;
    
 
    public Test(double f)
    
        this.x = (int)f;
    
 
    public Test(String s) 

 

答案:3个


以上是关于C#构造函数关键字可以是public,也可以是private吗?的主要内容,如果未能解决你的问题,请参考以下文章

C# 一些知识点总结

c#学习-base和this在构造函数中的应用

C# 静态构造函数

C# 关于 构造函数问题 关于对象实例化

Java 构造函数

C#关键字:访问修饰符