日期:2014-05-17  浏览次数:21339 次

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;
                }
            }

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