练习:实现一个抽象类

时间:2017-11-15 14:36:42

标签: c#

所以我在dotnetcademy.net上关注C#初学者教程,其中一个练习是实现一个抽象类。

目标是: 1.创建一个名为SpaceStation的抽象类 2.在该抽象类上,添加一个名为FireLaser的抽象方法 3.创建一个名为DeathStar的派生类,它实现FireLaser方法,将“Pew pew”写入Console,后跟一个新行。

您开始使用的代码是:

using System;

// Implement your classes here

public class Program
{
    public static void Main()
    {
    }
}

所以我写了这个,但它在返回时说“由于'DeathStar.FireLaser()'返回void,返回关键字后面不能跟一个对象表达式” 但是我不知道还有什么要写的,我已经尝试了多个其他的东西

using System;

// Implement your classes here
public abstract class SpaceStation
{
    public abstract void FireLaser();   
}

public class DeathStar : SpaceStation
{
    public override void FireLaser()
    {
        return  Console.WriteLine("Pew pew");
    }
}

public class Program
{
    public static void Main()
    {
    }
}

所以,如果有人有解决方案,那么我可以在我所写的内容上反映出来,这样做会很好,或者如果有人可以说出它应该是什么。

2 个答案:

答案 0 :(得分:0)

从重写的return方法中删除FireLaser语句:

public class DeathStar : SpaceStation
{
    public override void FireLaser()
    {
        Console.WriteLine("Pew pew");
    }
}

答案 1 :(得分:0)

作为void的方法marked不会返回任何内容。 return关键字通常用于从方法返回结果。因此,在void方法中通常没有意义。从语句中删除return关键字将解决编译器错误。

public class DeathStar : SpaceStation
{
    public override void FireLaser()
    {
        Console.WriteLine("Pew pew");
    }
}

请注意,可以在void方法中使用return关键字 来结束方法。但是,通常不鼓励使用它,因为它可能导致从多个位置返回的代码,这可能会造成混淆。以这种方式使用时,您仍然不返回实际值。 return将是声明的唯一部分。请考虑以下代码:

public void ProcessSomeWork(SomeWork work)
{
    if(work.IsCompleted)
    {
        return;
    }

    work.DoSomething();
    DoSomethingElseToWork(work);
}