c# - 单例 - 我可以创建多个实例

标签 c# design-patterns singleton

我认为单例的意义在于我一次只能初始化一个实例?如果这是正确的,那么我的 C# 控制台应用程序代码中一定有错误(见下文)。

如果我对单例的理解是正确的,或者我的代码中是否有错误,请告诉我。

using System;
using System.Collections.Generic;
using System.Text;

namespace TestSingleton
{
    class Program
    {
        static void Main(string[] args)
        {
            Singleton t = Singleton.Instance;
            t.MyProperty = "Hi";

            Singleton t2 = Singleton.Instance;
            t2.MyProperty = "Hello";

            if (t.MyProperty != "")
                Console.WriteLine("No");

            if (t2.MyProperty != "")
                Console.WriteLine("No 2");

            Console.ReadKey();
        }
    }

    public sealed class Singleton
    {
        private static readonly Singleton instance = new Singleton();

        public string MyProperty { get; set; }

        private Singleton()
        {}

        static Singleton()
        { }

        public static Singleton Instance { get { return instance; } }
    }
}

最佳答案

事实上你在这里只有一个实例。你得到 2 个指针

Singleton t = Singleton.Instance; //FIRST POINTER
t.MyProperty = "Hi";

Singleton t2 = Singleton.Instance; //SECOND POINTER
t2.MyProperty = "Hello";

但它们都指向相同内存位置。

关于c# - 单例 - 我可以创建多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581653/

相关文章:

c# - 如何在 Xamarin 中设置 NSDictionary<NSString, NSObject> 对象的值?

c# - 设计面向对象和单元测试友好的查询系统

c++ - 服务定位器实现

android - 如何使用(智能引用)代理设计模式实现缓存机制?

Android 以 bundle 方式传递持久信息还是使用单例模式?

java - 什么时候单例类比只有静态方法的类更受欢迎?

c# - 使用C#读取Excel文件

c# - 这个 thread.abort() 正常安全吗?

java - 如何避免工厂模式中的 Java 泛型警告

ios - 单例不会跨 View Controller /spritekit 场景持续存在