mat*_*dev 7 c# singleton static design-patterns
我有一个关于单身人士的问题,我认为我知道答案......但每次情况弹出时我都会稍微猜测一下自己,所以我想知道具体的答案.
假设我有两个类设置如此...
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
{
}
Run Code Online (Sandbox Code Playgroud)
我的问题很简单.
我想知道如果我访问ClassA的单例,_classB字段是否也被视为静态?即使我没有将_classB声明为静态成员.
我总是基本上猜到_classB它被视为静态(一个内存位置),但我想知道肯定.我错了吗?每次从singleton ClassA访问时都会为_classB创建一个新对象...即使内存中只有一个ClassA?或者是因为我在声明上新建了_classB,导致只有一个实例?
提前谢谢,-Matt
Ree*_*sey 11
创建单例时,您将创建一个非静态类型的静态实例.
在这种情况下,您的类型(A类)包含对另一种类型(B类)的引用.静态实例将保存对B类对象的单个实例的单个引用.从技术上讲,它不是"静态的",但由于它的根源是静态对象(类A实例),它的行为就像一个静态变量.您将始终拥有一个且仅有一个B类对象(由A类实例指向).您永远不会在A类中创建多个B类实例.
但是,没有什么能阻止在其他地方生成第二个B类实例 - 这将是一个不同的实例.
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |