首页 > 解决方案 > C# - 这是应该如何使用属性吗?

问题描述

https://github.com/krgamestudios/Last-Ember/blob/master/Scripts/Managers/PauseManager.cs

//paused controller
bool paused = false;
public bool Paused {
    get {
        return paused;
    }
    set {
        paused = value;
        TriggerLists();
    }
}

我知道你可以这样做:(Paused { get; set; }我不知道出于什么目的)。我想知道的是上面的代码是否是带有额外代码的属性的最佳实践。

标签: c#

解决方案


是的,在上面的示例中,您在为类设置属性值时触发了额外的操作,这是属性使用的一个很好的例子。另一个例子是只有一个“Get”访问器的属性,例如

bool paused = false;
public bool Paused 
{
    get 
    {
        return paused;
    }
}

public void PlayMusic()
{
    paused = false;
    //Do other stuff to play music
}

因此,无论何时您或其他人调用 PlayMusic() 方法,私有 paused 变量都将设置为 false;而“Paused”属性会让你直接知道状态是否暂停。重要的是,如果您不希望有人直接设置“暂停”状态,他们就不能这样做。它必须是另一个动作的副作用(在这种情况下,PlayMusic())


推荐阅读