操作setter以避免null

本文关键字:null setter 操作 | 更新日期: 2023-09-27 18:07:29

通常我们有:

public string code { get; set; }

我需要避免null引用异常,如果最终有人将代码设置为null

我尝试这个想法…任何帮助吗?

public string code { get { } set { if (code == null) { code = default(string); }}}

操作setter以避免null

您需要声明一个支持字段,这里我将其称为_code:

private string _code = "";
public string Code
{
    get
    {
        return _code;
    } 
    set 
    { 
        if (value == null) 
            _code = "";
        else
            _code = value;
    }
}

我还将属性重命名为Code,因为在c#中习惯将所有公开的内容都大写。

请注意,在您自己的代码中,您写的是default(string),但这与null相同。

通常的做法是抛出异常,而不是将_code设置为"":
private string _code = "";
public string Code
{
    get
    {
        return _code;
    } 
    set 
    { 
        if (value == null) 
            throw new ArgumentNullException("value");
        _code = value;
    }
}

你可以试试这个

  private string _code="";

public string Code
{
    get
    {  return _code ; } 
    set 
    {
       _code = value ?? "";
    }
}