我正在为初学者C#课程编写一个控制台程序,而且我完全卡住了。
程序中的菜单应该使用switch()
来处理,您可以在case 1
中输入数据,然后您可以在case 3
中请求它。
通过调用类playback
或live
中的构造函数来存储数据,我的问题是如何通过选择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;
}
}
}
}
答案 0 :(得分:1)
在while
循环之外声明变量,以便稍后可以访问它们。目前,它们的范围仅限于案例标签。
答案 1 :(得分:0)
我想你应该能够添加多个Live
和Playback
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);
。