[英]Assigning auto-implemented property to itself with null coalescing operator “??”
我有一個自動實現的屬性,它采用默認值。 此屬性從數據庫中讀取其值,但如果是 null,則應采用其默認值。
// Variable Declaration
public bool IsSoundEffects { get; set; } = true;
// Usage
bool? readFromDB = null; // Get it from Database assume its NULL
IsSoundEffects = readFromDB ?? IsSoundEffects;
如果先前的數據庫讀取結果為 null,那么將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;
讓它變得簡單
if(readFromDB != null) IsSoundEffects = readFromDB;
這樣就可以避免在 readFromDB 為 null 時分配相同的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.