如何保证一个类只能有一个实例存在? 在多线程情况下如何解决?using System;using System.Collections.Generic;using System.Text;namespace Singleton{ class Singleton { //构造函数私有化,保证不被显式实例化 private Singleton() { } //定义属性,返回Singleton对象 private static Singleton singleton; public static Singleton Instance { get { if (singleton == null) singleton = new Singleton(); return singleton; } } }}//多线程版本的Singletonnamespace SingletonMultiThread{ class Singleton { private static object lockHelper = new object(); //构造函数私有化,保证不被显式实例化 private Singleton() {} //定义属性,返回Singleton对象 private static volatile Singleton singleton = null; public static Singleton Instance { get { if (singleton == null) { lock (lockHelper) { if (singleton == null) singleton = new Singleton(); } } return singleton; } } }}//经典的Singleton实现:仅仅适合无参构造器对象(可用属性实现扩展)namespace classicalSingleton{ sealed class Singleton { private Singleton() { } //内联初始化,后面的new是个静态构造器 public static readonly Singleton Instance = new Singleton(); } class Program { static void Main(string[] args) { Singleton s1 = Singleton.Instance; Singleton s2 = Singleton.Instance; if (object.ReferenceEquals(s1, s2)) Console.WriteLine("两个对象是相同的实例。"); else Console.WriteLine("两个对象非相同的实例。"); } }} 转载于:https://www.cnblogs.com/flaaash/archive/2007/12/30/1020841.html