操纵setter以避免null

时间:2014-06-07 09:28:13

标签: c# .net properties

通常我们有:

public string code { get; set; }

如果最终有人将代码设置为null

,我需要避免空引用异常

我尝试这个想法......有什么帮助吗?

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

2 个答案:

答案 0 :(得分:4)

你需要声明一个支持字段,我在这里称之为_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;
    }
}

答案 1 :(得分:1)

你可以试试这个

  private string _code="";


public string Code
{
    get
    {  return _code ; } 

    set 
    {
       _code = value ?? "";
    }
}