数组或链表如何包含不同的对象作为元素?这怎么能在C#或C++中完成?数组如何包含不同的对象作为元素?
1
A
回答
3
数组可以包含不同类对象的唯一方法是它们全都具有公共基,并声明该数组包含该公共基。例如,你可以有3类是这样的:
class MyBase {
public int SomeParameter { get; set; }
}
class MyFirstChild : MyBase {
public int SomeOtherParameter { get; set; }
}
class MySecondChild : MyBase {
public int SomeOtherParameter { get; set; }
}
和你的数组声明如下:
MyBase[] myArray = new MyBase[3];
现在你可以把MyBase
类型或其子女的不同物体进入此阵,像这样:
myArray[0] = new MyBase();
myArray[1] = new MyFirstChild();
myArray[2] = new MySecondChild();
,如果所有的人都将实施一些接口,而不是从MyBase
继承同样会工作。
3
那么使用C#,你可以声明一个接口,这两种类型实现接口:
public interface IType
{}
public class Thing : IType
{}
public class Thing2 : IType
{}
List<IType> list = new List<IType>();
list.Add(new Thing1());
list.Add(new Thing2());
+0
谢谢你的回答! – user3015999
1
在C++中,它不能。但是,它可以包含:
- 使用公共基类指向不同对象。如果您希望容器管理这些对象的生命周期(就像它直接包含它们那样),然后存储智能指针。
- 歧视联盟或类似的变体类型。 Boost库提供
variant
(静态指定的一组类型的联合)和any
(一个多态封装来保存任何类型)。
我对C#一无所知,但我想你可以做类似于这些的事情。
0
使用一组void指针
void * ptr [];
相关问题
- 1. 中包含的对象作为数组
- 2. 如何查找对象数组是否包含元素?
- 3. 如何包含数组对象转换为对象的对象
- 4. 如何创建一个包含对象作为数组元素的类的数组?
- 5. 如何将包含对象的集合填充为元素,并为对象的元素传递参数?
- 6. “包含”搜索对象数组的子元素
- 7. C#如何比较作为数组元素的对象属性?
- 8. 将数组分解为包含每个x元素的不同数组
- 9. Mongoid:数组包含元素或为空
- 10. 从包含相同名称的对象数组中合并元素
- 11. 克隆包含DOM元素的对象
- 12. 如何将包含作为数组的成员变量的对象转换为对象数组?
- 13. 包含相同元素的两个数组不能相等吗?
- 14. 对象数组包含对象内的所有相同的值
- 15. 如何在包含不同对象的ArrayList中添加对象组的结尾
- 16. 包含对象的NSMutableArray中的组元素
- 17. 如何包含同名多个元素
- 18. jQuery如果元素:包含不工作
- 19. 如何解析包含PHP数组对象的JSON对象?
- 20. 如何检查数组是否只包含一个不同的元素?
- 21. 如何让数组中的对象包含整数数组?
- 22. Sort Objective-c数组,其中包含包含数组的对象
- 23. 将包含数组元素的字符串转换为数组
- 24. NSDictionary可以包含不同类型的对象作为值吗?
- 25. 如何在包含对象包含unique_ptr时删除矢量的元素?
- 26. 作为不同数组索引的数组元素
- 27. 在另一个数组元素中包含数组元素值?
- 28. 如何包含来自其他对象的表单元素?
- 29. 如何迭代包含数组对象的多维数组?
- 30. 如何变换对象的JSON数组包含数组
我不明白你在问什么。你能详细说明一下吗? – Aheho
为什么不在C#中创建'object'列表?在C++中,你总是可以使用'void *'的数组或者''vector''来放入任何东西。但确切的答案将取决于您的需求。 –