首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将继承的项添加到同一个列表容器中

问将继承的项添加到同一个列表容器中
EN

Stack Overflow用户
提问于 2014-04-02 05:57:01
回答 2查看 731关注 0票数 0

伙计们,我不知道我是不是错过了任何重要的OOP概念,如果我错过了什么,请指导我。我有一个基类和一些继承的类如下所示

代码语言:javascript
复制
Class Shape {}
Class Arc:Shape{}
Class Line:Shape{}

现在,我想用所有生成的形状创建一个容器(列表),然后当我读回时,我会将对象强制转换成特定的类型。做it.Is泛型的最好方法是什么,这是我在下面展示的唯一方法。请帮帮忙

代码语言:javascript
复制
SortedList shapeList;
public int addShapes(Shape item)  {shapeList.Add(ItemID, item);}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-02 06:13:54

可以将所有Shape实例放入List<Shape>中

代码语言:javascript
复制
var list = new List<Shape>();
list.Add(new Arc());
list.Add(new Line());
list.Add(new Arc());
list.Add(new Arc());
list.Add(new Line());

要获取所有Arc实例,您可以这样做:

代码语言:javascript
复制
var arcs = list.OfType<Arc>();

同样,对于所有Line实例:

代码语言:javascript
复制
var lines = list.OfType<Line>();
票数 3
EN

Stack Overflow用户

发布于 2014-04-02 06:24:12

将对象添加到List<Shape>中

代码语言:javascript
复制
var list = new List<Shape>();
list.Add(new Arc());
list.add(new Line());
list.Add(new Arc());

然后使用LINQ查询原始列表并检索对象:

代码语言:javascript
复制
var arcList = list.Where(x => x.GetType() == typeof(Arc)).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22802679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档