我有一个单身人士:
private static MyClass instance;
public static MyClass Instance
{
get
{
if (instance == null)
{
GameObject go = GameObject.Find("MyClassObject");
if(go == null)
{
Debug.LogError("Can not found MyClassObject!");
}
instance = go.GetComponent<MyClass>();
}
return instance;
}
}
void Awake()
{
MakePhotoState.Instance; // 1
}
在1
我想调用Instance
getter,它会为我的单身人士创建实例。 Awake
实际上是一种MonoBehaviour
方法(Unity3D
),但我认为这不重要。
1
处的代码给出了以下错误:
error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement
我的理解,但它不应该适用于此 - 我正在(隐含地)调用Instance
getter。
我能想到的一个解决方法是将1
的结果分配给本地虚拟变量,但这是一个不好的解决方案IMO。
有没有办法明确调用get
?如果没有,我该如何消除错误?
答案 0 :(得分:1)
属性访问器与方法调用完全不同。尝试将初始化代码移动到static constructor,并让Instance getter返回(private static readonly
)单例实例。
优点是在与该类进行任何交互之前,将自动为您执行静态构造函数。