c# - 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; }
我不知道出于什么目的)。我想知道的是上面的代码是否是带有额外代码的属性的最佳实践。
解决方案
是的,在上面的示例中,您在为类设置属性值时触发了额外的操作,这是属性使用的一个很好的例子。另一个例子是只有一个“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())
推荐阅读
- javascript - Vuex 持久化认证状态
- node.js - 将缓冲区转换为 blob 并将其设置为 Nodejs 中的 FormData
- javascript - 如何为一组对象更改每个对象中的一个值
- swift - 无法将 JSON Parsing 中的值附加到 Swift 中的数组
- c - 如何调用在默认 IRQL 中分页的内核函数?内存管理器不应该将它们带回内存吗?
- python - 使用 pandas 处理文件
- sql - MS SQL 根据日志时间识别重复行
- r - 对于广义线性模型,finalfit 可以处理的协变量是否有限制?
- vue.js - 如何使用 vue v3 项目将 boostrap v5 (js + css) 导入 nuxt.js v2.14?
- javascript - JQuery在画布图像上画线并重置线而不影响图像