我有一个采用默认值的自动实现的属性。该属性从数据库读取其值,但是如果该值为null,则应采用其默认值。
// Variable Declaration
public bool IsSoundEffects { get; set; } = true;
// Usage
bool? readFromDB = null; // Get it from Database assume its NULL
IsSoundEffects = readFromDB ?? IsSoundEffects;
如果先前的数据库读取结果为空,是否将IsSoundEffects
分配给自身?
使该代码井井有条并易于阅读的诀窍是什么?
您在做什么很好。另外,GetValueOrDefault也可以使用。
IsSoundEffects = readFromDb.GetValueOrDefault(IsSoundEffects);
如果您的readFromDb
确实是带有参数的方法,那么这两种方法都是很好的解决方案,因为您可以使用如下所示的简洁语法
IsSoundEffects = readFromDb(some, parameters).GetValueOrDefault(IsSoundEffects);
IsSoundEffects = readFromDb(some, parameters) ?? IsSoundEffects;
在将??
运算符引入C#之前,前者是您唯一的选择。
如果“对自己的分配”令人反感,请避免进行初始分配,而在其他地方进行明确分配,例如]]
public bool IsSoundEffects { get; set; }
...
IsSoundEffects = readFromDb(some, parameters).GetValueOrDefault(true);
IsSoundEffects = readFromDb(some, parameters) ?? true;
简单点