首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-12-25 
C# List容器的使用问题求各位大神详细解答:我现在定义了很多个图形的类,比如Triangle,Rectangular,Circle

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 类型为 基类
也就是图形类


热点排行