[英]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.