C#覆盖函数如何返回null

时间:2014-10-15 05:41:18

标签: java c# inheritance

所以我试图实现一些继承,我遇到了一个问题。我来自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#中获得相同的效果?

2 个答案:

答案 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后跟();它只是空的;