为什么我在使用接口时出现空异常

本文关键字:异常 接口 为什么 | 更新日期: 2024-11-06 18:44:52

public class Blah
{
    public bool Whatever { get; set; }
    public string WhatYouJustSaid { get; set; }
}
public interface IBlah
{
    Blah BlahValues { get; set; }
}
class Class1:IBlah
{
    public Blah BlahValues { get; set; }
}

然后例如:

   Class1 c1 = new Class1();
   c1.BlahValues.WhatYouJustSaid = "nothing";
    c1.BlahValues.Whatever = false;

那么我应该如何更改BlahValues不会为空的代码呢?

为什么我在使用接口时出现空异常

您必须初始化BlahValues。使用对象初始值设定项,可以按如下方式完成此操作:

Class1 c1 = new Class1()
{
   BlahValues = new Blah() 
};

创建 c1 对象时,BlahValues获取其默认值,即 null 。因此,当您尝试将值分配给WhatYouJustSaidWhatever时,会得到一个空引用异常。

在 Class1 的构造函数中像这样使用它

public  Class1()
{
    this.BlahValues = new Blah() 
}