gpt4 book ai didi

c# - 没有私有(private)构造函数可以制作单例吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:55 25 4
gpt4 key购买 nike

    private static PostalCodeInfoTable postalCodeInfoTable = new PostalCodeInfoTable();

public static PostalCodeInfoTable GetInstance() { return postalCodeInfoTable; }


public PostalCodeInfoTable()
{
db = new GetConnectionString());
}

我使用 GetInstance() 创建一个 PostalCodeInfoTable,然后我使用一个成员函数加载一些我没有在这里显示的数据,然后我再次使用 GetInstance 然后数据已经预加载,所以看起来我们有一个单例,但我在理论上很困惑为什么我们可以用公共(public)构造函数来做到这一点

最佳答案

没有私有(private)构造函数就不能创建单例!

如果一个类有一个公共(public)构造函数,那么任何人都可以随时创建它的一个实例,这样它就不是单例了。

为了使其成为单例,只能有一个实例。

来自 wikipedia

An implementation of the singleton pattern must:

  1. ensure that only one instance of the singleton class ever exists;
  2. and provide global access to that instance.

Typically, this is done by:

  1. declaring all constructors of the class to be private;
  2. and providing a static method that returns a reference to the instance.

关于c# - 没有私有(private)构造函数可以制作单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com