redhaze
redhaze

Reputation: 27

C# tutorial, how to return a string in a method?

I am new to C# and have been doing tutorials on .NET Academy. I have been stuck on this exercise and cannot figure out what to do. Here are the requirements:

  1. Create an abstract class named Astrodroid that provides a virtual method called GetSound which returns a string. The default sound should be the words "Beep beep".

  2. Implement a method called 'MakeSound' which writes the result of the GetSound method to the Console followed by a new line.

  3. Create a derived class named R2 that inherits from Astrodroid.

  4. Override the GetSound method on the R2 class so that it returns "Beep bop".

And here's what I have so far:

using System;

// Implement your classes here.
public abstract class Astrodroid
{
    public virtual string GetSound { get { return "Beep beep"; } }
    void MakeSound ()
    {
        Console.WriteLine(GetSound);
    }
}


public class R2 : Astrodroid
{
    public override string GetSound { get { return "Beep bop"; } }
    void MakeSound ()
    {
        Console.WriteLine(GetSound);
    }
}

public class Program
{
    public static void Main()
    {

    }
}

Now my problem is I don't know how to make "GetSound" a method without getting compilation errors. How would you go about doing this?

Upvotes: 0

Views: 169

Answers (2)

DevOhrion
DevOhrion

Reputation: 328

It looks like you've made GetSound into a Property, rather than a Method. This snippet should get you started without answering the entire tutorial for you.

    public virtual string GetSound()
    {
        return "Beep beep";
    }

Upvotes: 2

Camilo Terevinto
Camilo Terevinto

Reputation: 32068

You got it almost right, just do this:

using System;

// Implement your classes here.
public abstract class Astrodroid
{
    public virtual string GetSound()
    { 
        return "Beep beep";
    }

    public void MakeSound()
    {
        Console.WriteLine(GetSound());
    }
}


public class R2 : Astrodroid
{
    public override string GetSound()
    {
        return "Beep bop";
    }
}

public class Program
{
    public static void Main()
    {

    }
}

So you make GetSound a method, override it, and there's no need to override MakeSound since that behavior doesn't change.

Upvotes: 1

Related Questions