俺在运行一个C#程序时抛出如下错误:
未处理的“System.InvalidCastException”类型的异常出现在 ConsoleApplication2.exe 中。
其他信息: 指定的转换无效。
错误停在这一行上: Hotel Show_hot=(Hotel)o;
不知为何?
未处理的“System.InvalidCastException”类型的异常出现在 ConsoleApplication2.exe 中。
其他信息: 指定的转换无效。
错误停在这一行上: Hotel Show_hot=(Hotel)o;
不知为何?
using System;
using System.Collections;
//………省略………namespace ConsoleApplication2
{
class Hotel
{
public string City;
public int Hotel_id;
public string Hotel_name;
public int Room_number;
public int Room_price;
public int Spare_room;
protected internal char Flag_hotel='n';
}
class Show
{
public int count=0;
public void main()
{
System.Console.WriteLine(" ┏━━━━━━━━━━━━━━━━━━━━┓");
System.Console.WriteLine(" ┃ 旅馆预订系统v1.0 ┃");
System.Console.WriteLine(" ┗━━━━━━━━━━━━━━━━━━━━┛");
System.Console.WriteLine(" ┌────────────────────┐");
System.Console.WriteLine(" │ 1.加入新旅馆信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 2.加入新度假村信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 3.加入新预订信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 4.取消预订信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 5.查看某城市旅馆与度假村详细信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 6.显示某旅馆与度假村信息 │");
System.Console.WriteLine(" ├────────────────────┤");
System.Console.WriteLine(" │ 7.退出本系统 │");
System.Console.WriteLine(" └────────────────────┘");
System.Console.Write(" 请按操作编号:");
count=int.Parse(System.Console.ReadLine());
System.Console.WriteLine(" Count的值为:"+count);
}
}
class Operation
{
public void Add_hotel(Hotel hot0)
{
System.Console.WriteLine(" 填写新旅店信息");
System.Console.Write(" 填写新旅店所在城市名:");
hot0.City=System.Console.ReadLine();
System.Console.Write(" 填写新旅店的编号:");
hot0.Hotel_id=int.Parse(System.Console.ReadLine());
System.Console.Write(" 填写新旅店的名字:");
hot0.Hotel_name=System.Console.ReadLine();
System.Console.Write(" 填写新旅店的房间数量:");
hot0.Room_number=int.Parse(System.Console.ReadLine());
System.Console.Write(" 填写新旅店的房间价格:");
hot0.Room_price=int.Parse(System.Console.ReadLine());
System.Console.Write(" 填写新旅店的可预订房间数量:");
hot0.Spare_room=int.Parse(System.Console.ReadLine());
System.Console.Write(" 添加旅店信息完毕,请问是否继续增加(y/n):");
hot0.Flag_hotel=char.Parse(System.Console.ReadLine( ));
}
} class Test
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
char Flag=' ';
char Quit_flag=' ';
Show Mainsys=new Show();
ArrayList al=new ArrayList();
Hotel hotel0=new Hotel();
Operation h0=new Operation();
do
{
Flag=' ';
cls.Clear();
Mainsys.main();
switch(Mainsys.count)
{
case 1:
//………省略………
break;
case 2:
//………省略………
break;
case 3:
//………省略………
break;
case 4:
//………省略………
break;
case 5:
foreach( object o in al)
{
Hotel Show_hot=(Hotel) o; //取集合中元素 <问题就出在这里!>
System.Console.WriteLine(" ==================== 查看旅馆信息 ===================");
System.Console.WriteLine("所在城市名:"+Show_hot.City);
System.Console.WriteLine("旅店编号:"+Show_hot.Hotel_id);
System.Console.WriteLine("旅店名称:"+Show_hot.Hotel_name);
System.Console.WriteLine("房间数量:"+Show_hot.Room_number);
System.Console.WriteLine("房间价格:"+Show_hot.Room_price);
System.Console.WriteLine("可预定房间的数量:"+Show_hot.Spare_room);
}
break;
case 6:
//………省略………
break;
case 7:
//………省略………
break;
default:
//………省略………
break;
}
}
while(Flag=='y'||Flag=='Y');
System.Console.Read();
}
}
}
foreach(object o in al)
{
if (o is Hotel)
{
赋值
}
else
{
Console.WriteLine(o.GetType().ToString());
}
}