所以我试图实现一些继承,我遇到了一个问题。我来自java所以我基本上试图转换代码。所以例如在java中你可能有这个。
public class galaxyFactory extends abstractFactory
{
@Override
public galaxy setType()
{
return new Spiral();
}
@Override
SolarSystem setType()
{
return null;
}
}
如果你在一个星系之后,这将返回一个新的Spiral对象,并用一个简单的返回null覆盖SolarSystem setType。然而,当试图将其转换为c#时,我想出了类似的东西。哪个不起作用,它出错“NullReferenceException未处理”
class GalaxyFactory: AbstractFactory
{
public override Galaxy CreateProductA()
{
return new spiral();
}
public override SolarSystem CreateProductB()
{
return null;
}
}
我需要更改返回null才能在c#中获得相同的效果?
答案 0 :(得分:1)
发生此错误是因为您尝试使用未初始化的对象。当你使用CreateProductB获得SolarSystem时,实际上你得到了null对象,然后当你尝试使用这个对象时,它会抛出NullReferenceException。
答案 1 :(得分:0)
class GalaxyFactory: AbstractFactory
{
public override Galaxy CreateProductA()
{
return spiral();
}
public override SolarSystem CreateProductB()
{
return null;
}
}
null不是函数..所以不要写null后跟();它只是空的;