Getter电话不被视为声明

时间:2014-03-12 22:31:03

标签: c# unity3d singleton getter

我有一个单身人士:

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?如果没有,我该如何消除错误?

1 个答案:

答案 0 :(得分:1)

属性访问器与方法调用完全不同。尝试将初始化代码移动到static constructor,并让Instance getter返回(private static readonly)单例实例。

优点是在与该类进行任何交互之前,将自动为您执行静态构造函数。