我想創建一個列表,其中包含我的遊戲中產生的所有不同單位的所有對象,但它們不是全部相同的類。如果有幫助,它們都是主要單元類的子類。但基本上我有一個基本功能的主要單元類,然後更多的是劍客,派克曼等,我希望能夠將所有不同類型放在一個列表中,以便能夠更輕鬆地管理它們。那可能嗎?C# - 不同類型的對象列表
0
A
回答
3
是的,這是可能的。
正如Rob在他的評論中所說的,你需要製作一個List<SharedBaseClass>
。
var someList = new List<SharedBaseClass>();
當你試圖與列表中的某個特定元素,你需要轉換回到正確的子類交互:
// throws an exception if type wrong
var someElement = (desiredSubClass) someList[someElementIndex];
// return null if type wrong
var someElement = someList[someElementIndex] as desiredSubClass;
1
Slvrfn的前面回答應該能正常運行。如果您不喜歡投射,或者您關心在Unity中投射效果時,還可以在子類中創建一個變量,並使用this
關鍵字在constructor
中對其進行初始化。
比方說,你有你繼承兩個類:
public class FirstBase
{
public int speed = 50;
}
public class SecondBase : FirstBase
{
public int live = 5;
}
然後你的子類:
public class MySubClass : SecondBase
{
public FirstBase firstBase;
public SecondBase secondBase;
public MySubClass()
{
firstBase = this;
secondBase = this;
}
}
您不需要再投。您可以使用MySubClass
中定義的firstBase和secondBase變量。
List<MySubClass> subClass = new List<MySubClass>();
subClass.Add(new MySubClass());
FirstBase firstBase = subClass[0].firstBase;
SecondBase secondBase = subClass[0].secondBase;
+0
這個問題是我想要基本上有一個單位類型的數組,所以我可以給他們打電話,他們不是每個頂級的子類 –
+0
嗯,你說他們是你的問題的子類。 TBH,如果你想有一個很好的答案,請在下次提問時提供一個代碼。你提供的樣本會告訴人們你在做什麼。 – Programmer
相關問題
- 1. JSON Newtonsoft C#反序列化不同類型的對象列表
- 2. Python不同類的對象列表
- 3. 返回不同的列表類型C#
- 4. C#中對象的不同列表#
- 5. 在相同類型的對象中迭代對象列表
- 6. 同一類型對象中的對象列表?
- 7. Java參數化泛型類型列表創建不同類型的對象
- 8. 不同類型的列表?
- 9. 對象C代表不兼容類型
- 10. 不同類型對象
- 11. 不同類型的對象填充列表
- 12. 使用2種不同的對象類型列表
- 13. 包含C++中兩個不同類的對象的列表
- 14. C#不同數據類型列表
- 15. 不同類型的同一個對象
- 16. 不同類型的列表?
- 17. 不同類型的列表
- 18. C#在一個列表中的不同類對象
- 19. 同一對象的類型和瞬間的不同屬性列表?
- 20. 對包含不同類型的列表或對象進行排序R
- 21. 不同類型的列表列表
- 22. 不同類型的列表列表
- 23. C#反射列表:對象與目標類型不匹配
- 24. MVC C#:使用相同的不同模型中的對象列表(參考?)
- 25. 不同對象的在VB.net型和C#
- 26. 同一類型的對象cout,cerr,clog表現如何不同?
- 27. 合併不同類型的對象
- 28. 複製不同類型的對象
- 29. 不同類型的Java通用對象。
- 30. 不同類型的對象傳遞
但是,這不會有從它的子類的信息會呢? –
當然可以,你可以添加完整的對象。您必須將其轉換爲首選對象才能獲取它。 – NikxDa
最好創建對象列表清單。如果您需要遍歷所有對象,開銷將會非常小(遍歷主列表中的每個列表),但在自己的列表中遍歷一個特殊的對象類型將會快得多,並且遍歷一個包含所有對象的大列表。 – crea7or