所以我在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()
{
}
}
所以,如果有人有解决方案,那么我可以在我所写的内容上反映出来,这样做会很好,或者如果有人可以说出它应该是什么。
答案 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);
}