• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

C#6.0的默认初始化

c/c++ 来源:Happy Bird 3次浏览

下面的代码是有效的在C#5.0:C#6.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/en-us/magazine/dn802602.aspx)

以下代码是在C#6.0有效(但不相同的逻辑)

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

我试图与:

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

但这由于失败名称“值”在当前上下文中不存在

我该如何解决这个错误?

我想要做的是将属性设置为“abc_”,如果它为空或空,并且它已经有一个值,请不要触摸它。

===========解决方案如下:

此代码不是关于默认初始化,而是关于防止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中狙击的第一个代码的唯一方法是使用表达式体。并且不仅要检查字符串是否为空,而且如果它为空,则可以使用string.IsNullOrEmpty

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

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)