如何修改getter和setter,以处理空引用异常

时间:2018-10-16 16:26:28

标签: c# reference null setter getter

我正在解析JSON字符串,并将其反序列化。现在可以正常工作,但是我在处理值时遇到问题,它是一个空字符串或null。

此属性有2个值(例如链接和值)。一般。但是我读取的属性可能为空(因此没有链接,也没有值)。

我这样写吸气剂和吸气剂。

private ResolvedBy myVar1;
public ResolvedBy resolved_by
{
 get
 {
  if (myVar1 == null)
  {
  myVar1 = new ResolvedBy();
  return myVar1;
  }
  // if (String.IsNullOrWhiteSpace(myVar1.link) && String.IsNullOrWhiteSpace(myVar1.value))
  if (myVar1.ToString() == String.Empty)
  {
  myVar1 = new ResolvedBy();
  return myVar1;
 }
 return myVar1;
}
set { myVar1 = value; }

}

并且该类具有以下代码

public class ResolvedBy //
{
public string link { get; set; }
public string value { get; set; }
}

如果我现在使用new修饰符重新实例化该对象,则链接和值也为null。在这种特殊情况下,是否可以用空字符串填充链接和值?

3 个答案:

答案 0 :(得分:2)

您可以为linkvalue设置默认值:

public class ResolvedBy
{
    public string link { get; set; } = "";
    public string value { get; set; } = "";
}

答案 1 :(得分:1)

  

如果我现在使用new修饰符重新实例化该对象,则该链接   和value也为null。有没有办法用   在这种情况下为空字符串?

当然

return new ResolvedBy { link = "", value = "" };

答案 2 :(得分:0)

现在尝试一下,如果属性为空,我已经对其进行了更新,以返回“”。

class ResolvedBy
{
    string link;
string value;
    public string Link
    {
        get
        {
            return (this.link == null ? "" :this.link 
        }
        set
        {
            this.link= (value ==null ? "" : value);
        }
    }
 public string Value
    {
        get
        {
            return (this.value == null ? "" : this.value); 
        }
        set
        {

this.value =( value == null ? "" : value);
        }
    }

}