![](/img/trans.png)
[英]How to add default value for a dependency property in UWP from static resource
[英]default value for a static property
我喜歡c#,但為什么我可以這樣做:
public static bool Initialized { private set; get; }
或這個 :
public static bool Initialized = false;
但不是兩者兼而有之?
我只需要為我的變量(私有集)設置訪問級別,我需要在啟動時將其設置為false。 我不想制作那個無聊的私有_Initialized變量,它將由公共Initialized var的getter返回。 我喜歡我的代碼很漂亮。 (注意:我的變量是靜態的,它不能在構造函數中初始化)。
謝謝
從C#6開始:
public static bool Initialized { private set; get; } = false;
你可以這樣做:
public static bool Initialized { private set; get; }
由於默認情況下bool
值始終為false,因此無需初始化它。
如果默認情況下需要這個,或者要有更復雜的邏輯,則需要在靜態構造函數中執行此操作或使用支持字段。
至於“我喜歡我的代碼是美麗的” - 就個人而言,對於非默認初始化,我認為這就像“美麗”:
private static bool initialized = true;
public static bool Initialized { get { return initialized; } }
這使得非默認的初始化非常明顯,這不是一件壞事。
你提到的兩個代碼塊是兩個不同的東西。
第一個塊是自動實現的屬性定義 。 這是完全屬性定義的語法糖,如下所示:
private static bool _initialized;
public static bool Initialized
{
private set
{
_initialized = value;
}
get
{
return _initialized;
}
}
您的第二個代碼塊是靜態成員定義 。 如果你看一下我上面給出的擴展,你會發現它包含一個私有的靜態成員定義。 如果您想提供初始值,可以在此處執行:
private static bool _initialized = false;
public static bool Initialized
{
private set
{
_initialized = value;
}
get
{
return _initialized;
}
}
您正在使用的內聯屬性定義只是為了在最常見的情況下使代碼更短。 如果您想要做任何其他事情,可以使用完整形式的屬性代碼。
或者,您可以使用完全不同的路徑並使用靜態構造函數。 (見Corey的回答 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.