Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我需要静态类和私有构造函数时?_C#_Constructor - Fatal编程技术网

C# 当我需要静态类和私有构造函数时?

C# 当我需要静态类和私有构造函数时?,c#,constructor,C#,Constructor,在阅读MSDN时,他们提到如果一个类只有静态成员等,比如数学类,可能需要私有构造函数。但是数学课实际上是一个静态的课。 他们还提到“或者当一个方法被用来获取类的实例时”——我可以想象它是如何工作的,但是你能给我举个例子吗?第二点是单例模式所依赖的。基本上,一个类可以通过使其构造函数私有化来管理它的实例化方式。当它这样做时,消费者无法做到这一点: var obj = new MyClass(); …因为构造函数是私有的。这意味着,消费者获得此类实例的唯一方法。。是通过方法或属性实现的。例如: p

在阅读MSDN时,他们提到如果一个类只有静态成员等,比如数学类,可能需要私有构造函数。但是数学课实际上是一个静态的课。
他们还提到“或者当一个方法被用来获取类的实例时”——我可以想象它是如何工作的,但是你能给我举个例子吗?

第二点是单例模式所依赖的。基本上,一个类可以通过使其构造函数私有化来管理它的实例化方式。当它这样做时,消费者无法做到这一点:

var obj = new MyClass();
…因为构造函数是私有的。这意味着,消费者获得此类实例的唯一方法。。是通过方法或属性实现的。例如:

public MyClass GetInstance() {
    return new MyClass();
}

(注意:不是单例,只是一个示例方法)

如果API等的客户端不能直接实例化类(类型),则使用私有或受保护的构造函数。另一个常见的用例是单例模式,如前面提到的Simon:

public class MySingleton
{
 private static MySingleton _instance;

 private MySingleton() {} // private constructor

 public static MySingleton Instance
{
  get 
  {
     if (_instance == null)

        _instance = new Singleton();

     return _instance;
  }
 }
}
“.when method用于获取类的实例…”是一个由四个工厂组成的方法设计模式:


这里是谷歌搜索中第一个链接后的第二个部分,你的措辞有点不恰当,导致。。。不,不是。工厂方法模式可能是引用中提到的一个例子,但它不是同一件事(即Singleton是另一个例子)。