簡體   English   中英

C#6.0默認初始化

[英]C# 6.0 Default Initialization

以下代碼在C#5.0中有效:

private static String _prefix;
public static String Prefix
{
    get { return _prefix; }
    set {_prefix = (value == String.Empty) ? "abc_" : value;}
} 

我正在嘗試使用默認初始化在C#6中更簡潔地編寫它。 https://msdn.microsoft.com/zh-cn/magazine/dn802602.aspx

以下代碼在C#6.0中有效(但邏輯不相同)

public String Prefix { get; set; } = "abc_";

我嘗試過:

public String Prefix { get; set; } value == String.Empty ? "abc_" : value

但這失敗,因為當前上下文中不存在名稱“值”

我該如何解決該錯誤?

我正在嘗試將屬性設置為“ abc_”,如果該屬性為null或為空,並且已經具有值,請不要觸摸它。

這段代碼不是關於默認初始化的,而是關於防止string.Empty beeing設置為初始化后的值。

private static String _prefix;
public static String Prefix
{
    get { return _prefix; }
    set {_prefix = (value == String.Empty) ? "abc_" : value;}
}

這行代碼將在初始化設置的默認值一次 ,但並不妨礙string.Empty從后beeing設置。

public String Prefix { get; set; } = "abc_";

我正在嘗試將屬性設置為“ abc_”,如果該屬性為null或為空,並且已經具有值,請不要觸摸它。

簡化在c#6中截斷的第一個代碼的唯一方法是使用表達式主體。 並且不僅可以檢查字符串是否為空,還可以檢查是否為null,可以使用string.IsNullOrEmpty

private static String _prefix;
public static String Prefix
{
    get => _prefix;
    set => _prefix = string.IsNullOrEmpty(value) ? "abc_" : value;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM