gpt4 book ai didi

c# - 单例模式 - 属性的不同值

转载 作者:行者123 更新时间:2023-11-30 15:19:12 36 4
gpt4 key购买 nike

我有一个使用单例模式的简单类:

public class MyClass
{
private MyClass()
{ }

private static MyClass instance;
private static readonly object locked = new object();

//Singleton
public static MyClass Instance
{
get
{
lock (locked)
{
if (instance == null)
{
instance = new MyClass();
}
}

return instance;
}
}

public string Rand
{
get
{
return new Random().Next(2500).ToString();
}
}
}

但如果我这样做:

var instance1 = MyClass.Instance;
var instance2 = MyClass.Instance;

instance1.Randinstance2.Rand有不同的值。

为什么我的单例有两个不同的实例,如何解决这个问题?

最佳答案

Singleton 实例是单个实例,访问 Rand 属性时每次创建一个新的随机值,如果你想在每次必须创建一个私有(private)字段或在

  private string _rand; 

public static MyClass Instance
{
get
{
lock (locked)
{
if (instance == null)
{
instance = new MyClass();
_rand = return new Random().Next(2500).ToString();

}
}

return instance;
}
}

public string Rand {
get {
return _rand;
}
}

关于c# - 单例模式 - 属性的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331851/

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