C# 练习:实现一个抽象类

C# 练习:实现一个抽象类,c#,C#,因此,我正在dotnetcademy.net上学习C#初学者教程,其中一个练习是实现一个抽象类 目标是: 1.创建一个名为SpaceStation的抽象类 2.在该抽象类上,添加一个名为FireLaser的抽象方法 3.创建一个名为DeathStar的派生类,该类实现FireLaser方法,将“PewPew”写入控制台,然后再添加一行 您从以下代码开始: using System; // Implement your classes here public class Program {

因此,我正在dotnetcademy.net上学习C#初学者教程,其中一个练习是实现一个抽象类

目标是: 1.创建一个名为SpaceStation的抽象类 2.在该抽象类上,添加一个名为FireLaser的抽象方法 3.创建一个名为DeathStar的派生类,该类实现FireLaser方法,将“PewPew”写入控制台,然后再添加一行

您从以下代码开始:

using System;

// Implement your classes here

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

所以我写了这篇文章,但它在返回时说“因为'death star.FireLaser()'返回void,所以return关键字后面不能跟对象表达式” 但我不知道还能写些什么,我试过很多其他的东西

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()
    {
    }
}

因此,如果有人有一个解决方案,我可以将其反映在我写的内容上,这会很好,或者如果有人可以说它应该是什么。

从覆盖的
FireLaser
方法中删除
return
语句:

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

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

public class DeathStar : SpaceStation
{
    public override void FireLaser()
    {
        Console.WriteLine("Pew pew");
    }
}
请注意,可以在void方法中使用return关键字来结束该方法。但是,通常不鼓励使用它,因为它可能导致从多个位置返回的代码,这可能会造成混淆。以这种方式使用时,仍然不会返回实际值<代码>返回将是语句的唯一部分。考虑下面的代码:

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

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

删除
return
。我已经修改了您的代码,使其遵循标准的C#缩进模式。我建议您采用这种风格,它使程序更易于阅读。省略
返回
,只需使用{Console.WriteLine(…);}作为规则,Void方法不会返回。从DeathStar类中的FireLaser方法中删除Return并查看发生了什么只需删除
Return
语句即可
void
方法不返回任何内容。(Console.WriteLine()
是否返回任何内容?)您可以有一个
返回void
方法中,代码>行本身,从该方法返回。但它没有价值。注意:这些都与抽象类无关。这只是基本的方法结构。哦,这么简单的错误。非常感谢你!谢谢你的详细解释,我真的很感激!