【发布时间】:2010-11-08 11:12:33
【问题描述】:
我有一个关于单身人士的问题,我想我知道答案……但每次出现这个场景时,我都会稍微猜测一下自己,所以我想知道具体的答案。
假设我设置了两个类...
public class ClassA
{
private static ClassA _classA;
public static ClassA Instance { get { return _classA ?? LoadClassA(); } }
private ClassA(){}
public static ClassA LoadClassA()
{
_classA = new ClassA();
return _classA;
}
private ClassB _classB = new ClassB();
public ClassB ClassB { get { return _classB; } set { _classB = value; } }
}
public class ClassB
{
}
我的问题很简单。
我想知道如果我访问 ClassA 的单例, _classB 字段是否也被视为静态字段?即使我没有将 _classB 声明为静态成员。
我一直基本上只是猜测 _classB 它被视为静态(一个内存位置),但我想确定。我错了吗?每次从单例 ClassA 访问 _classB 时,是否都会为它创建一个新对象……即使内存中只有一个 ClassA?还是因为我在声明中更新了 _classB,导致它只有一个实例?
提前致谢, -马特
【问题讨论】:
-
肯定会有一个 _classB 的实例。
标签: c# design-patterns static singleton