數組或鏈表如何包含不同的對象作爲元素?這怎麼能在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''來放入任何東西。但確切的答案將取決於您的需求。 –