读书人

C# List容器的使用有关问题

发布时间: 2012-12-25 16:18:28 作者: rapoo

C# List容器的使用问题
求各位大神详细解答:
我现在定义了很多个图形的类,比如Triangle,Rectangular,Circle等,这些类有坐标,大小等的属性,然后又定义了一个List<object>的容器,把不同类的对象存到容器里面,现在如何遍历这个list容器来获取存在容器中的对象的及其属性呢?
在线跪求解答!!!!!!!!!求指导,先谢谢了。
[解决办法]
你不应该用List<object>来存这些对象,而应该抽象出Triangle,Rectangular,Circle这几个类的基类或接口来,把三个类的坐标,大小等公共属性放到这个基类或接口中,然后用List<基类>或List<接口>来存储
[解决办法]
那就只能用反射了。嫌麻烦的话,试试dynamic。
[解决办法]


Triangle tri = new Triangle { Width = 3, Length = 4 };
Rectangular rec = new Rectangular { X = 1, Y = 3 };
Circle cir = new Circle { Radius = 4 };

List<object> list = new List<object>();//这不是List发挥作用的地方,如果非要这样还是使用ArrayList
list.Add(tri);
list.Add(rec);
list.Add(cir);

foreach (object item in list)
{
if (item is Triangle)
{
int width = ((Triangle)item).Width;
int length = ((Triangle)item).Length;
}
else if (item is Rectangular)
{
int x = ((Rectangular)item).X;
int y = ((Rectangular)item).Y;
}
else if (item is Circle)
{
int radius = ((Circle)item).Radius;
}
}

------解决方案--------------------


foreach(object obj in 你的集合)
{
if(obj is Triangle)
{
Triangle t = obj as Triangle;
t.xxx....
t.yyy....
}
else if(obj is Rectangular)
{
Rectangular r = obj as Rectangular;
r.xxx....
r.yyy....
}
//....
}
[解决办法]
如3楼


你应该写一个 比如 图形类

而 那些画图的 继承于这个类


list 类型为 基类
也就是图形类


读书人网 >C#

热点推荐