C# 如何在属性设置器中使用if条件

C# 如何在属性设置器中使用if条件,c#,C#,如果将null值分配给SettingCode,我希望将该值改为设置为“”或空字符串 [Required(AllowEmptyStrings = true)] [StringLength(20)] public string SettingCode { get; set; } 这很简单,只需声明一个局部变量来保存该值,并在集中实现一些代码即可: private string _settingCode; [Required(AllowEmptyStrings = true)] [StringL

如果将null值分配给SettingCode,我希望将该值改为设置为“”或空字符串

[Required(AllowEmptyStrings = true)]
[StringLength(20)]
public string SettingCode { get; set; } 

这很简单,只需声明一个局部变量来保存该值,并在
集中实现一些代码即可:

private string _settingCode;

[Required(AllowEmptyStrings = true)]
[StringLength(20)]
public string SettingCode
{
    get { return _settingCode; }
    set
    {
        _settingCode = value == null ? string.Empty : value;
    }
} 

我将使用property+字段来实现这一点,而不是自动实现的属性:

private string _settingCode;

[Required(AllowEmptyStrings = true)]
[StringLength(20)]
public string SettingCode
{
    get { return _settingCode; }
    set { _settingCode = value?? string.Empty; }
}

我猜您正在使用OR/M来填充此属性。因此,在DB上有一个可为null的字段,您只是不希望代码中出现null。这通常不是一个好主意,因为在持久化数据时,它可能会导致其他问题。 但是,如果是这种情况,并且您希望这样做,请使用支持字段:

string settingCode;

[Required(AllowEmptyStrings = true)]
[StringLength(20)]
public string SettingCode { get {return settingCode??"";} set { settingCode=value; } } 

你试过什么吗?getter和setter只不过是方法,所以您可以在那里添加代码。然而,这假设每个都有一个主体。“自动”特性会将该实体隐藏起来。参见此处示例:您只需要手动实现
set
get
方法。使用计算属性。文档中甚至提到:如果没有人设置值,则返回null,因此读取null存在风险。