【问题标题】:How to use if condition within a property setter如何在属性设置器中使用 if 条件
【发布时间】:2019-12-13 22:20:53
【问题描述】:

如果将 null 值分配给 SettingCode,我希望将值设置为 "" 或空字符串。

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

【问题讨论】:

标签: c#


【解决方案1】:

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

string settingCode;

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

【讨论】:

    【解决方案2】:

    这就像声明一个局部变量来保存值并在set中实现一些代码一样简单:

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

    【讨论】:

    • 如果没有人设置该值,则返回 null,因此读取 null 存在风险。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 2012-11-21
      • 2021-09-05
      • 1970-01-01
      • 2016-03-08
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多