C# 为什么在使用接口时出现null异常
然后举例来说:C# 为什么在使用接口时出现null异常,c#,C#,然后举例来说: 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; } } 那么,我应
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; }
}
那么,我应该如何更改
blahValue
不为空的代码呢 您必须初始化blahValue
。使用对象初始值设定项,可以按如下方式执行:
Class1 c1 = new Class1();
c1.BlahValues.WhatYouJustSaid = "nothing";
c1.BlahValues.Whatever = false;
当您创建
c1
对象时,BlahValues
会得到它的默认值,即null
。因此,当您尝试将值赋给刚才所说的和任何内容时,您会得到一个空引用异常。在Class1的构造函数中这样使用它
Class1 c1 = new Class1()
{
BlahValues = new Blah()
};
这与您使用的是接口这一事实无关。您有一个从未初始化过的属性。当然是空的。你必须给BlahValue赋值你看看我的问题好吗?在那个问题上,我使用了Ninject和NSubstitute,得到了一个空异常崩溃,起初我认为这是因为我对这两个都是新手,但后来我重新创建了我在这个问题上使用接口的方式,得到了相同的空异常。也许你也能帮我解决我的问题?
public Class1()
{
this.BlahValues = new Blah()
}