如何从另一个案例中输出存储在类/开关盒中的数据?

时间:2014-10-21 12:10:37

标签: c#

我正在为初学者C#课程编写一个控制台程序,而且我完全卡住了。 程序中的菜单应该使用switch()来处理,您可以在case 1中输入数据,然后您可以在case 3中请求它。 通过调用类playbacklive中的构造函数来存储数据,我的问题是如何通过选择case 3来写出存储的数据? 这是我的全部代码:

class Live
{
    public string name;
    public string instrument;

    public Live(string name, string instrument)
    {
        this.name = name;
        this.instrument = instrument;
    }

    public override string ToString()
    {
        return (string.Format("{0}{1}", name, instrument));
    }

    //default constructor for the constructor in Playback to work
    public Live()
    { }
}

class Playback : Live
{
    public int duration;

    public Playback(int duration)
    {
        this.duration = duration;
    }

    public override string ToString()
    {
        return (string.Format("{0}{1}", base.ToString(), duration));
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("###### Menu: ######");
        Console.WriteLine("1. Add a Live");
        Console.WriteLine("2. Add a Playback");
        Console.WriteLine("3. Write out all objects");
        Console.WriteLine("0. End");
        Console.WriteLine("#################");

        bool exit = false;
        while (!exit)
        {
            int val = int.Parse(Console.ReadLine());
            switch (val)
            {

                case 1:
                    Console.WriteLine("Input name: ");
                    string namn = Console.ReadLine();
                    Console.WriteLine("Input instrument: ");
                    string instru = Console.ReadLine();
                    Live live = new Live(namn, instru);
                    break;

                case 2:
                    Console.WriteLine("Input duration: ");
                    string time = Console.ReadLine();
                    int tid = int.Parse(time);
                    Playback playback = new Playback(tid);
                    break;

                case 3:
                    Console.WriteLine(); //this is where I need to output the results
                    break;

                case 0:
                    Environment.Exit(0);
                    break;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

while循环之外声明变量,以便稍后可以访问它们。目前,它们的范围仅限于案例标签。

答案 1 :(得分:0)

我想你应该能够添加多个LivePlayback s?

在循环时为你提供一个列表:

List<Live> sounds = new List<Live>();

由于Playback继承自Live,您可以将回放添加到此列表中。

在案例1和案例2中,在您定义了Live或Playback对象后,将其添加到列表中:

sounds.Add(live); // or sounds.Add(playback);

在您的情况3中,您可以循环播放声音并播放&#34;播放&#34;它们:

foreach(var sound in sounds)
{
   Console.WriteLine(sound.ToString());
}

顺便说一下,你的案例0可以是exit=true;而不是Environment.Exit(0);