3
A
回答
1
通用集合的主要優點是您可以指定想要存儲在集合中的確切類型,並且不需要裝箱。
您這裏有一些選擇:
- 你堅持在
System.Collections
命名空間中的非泛型集合內搭對象作爲參數。 - 您可以創建一個通用的類型對象集合。這與上述內容大致相同,但您可以使用
IEnumerable<T>
的所有擴展方法。 - 您可以創建一個通用接口的通用集合,即所有要存儲,執行的類型。
6
如果你需要存儲多種類型的替代品,你需要聲明你的收藏是一種類型的所有其他類型是兼容的。
因此,例如,把既有MemoryStream
,並在列表中FileStream
,你可能有一個List<Stream>
:
List<Stream> streams = new List<Stream>();
streams.Add(new MemoryStream());
streams.Add(new FileStream(...));
更多不同類型,你可能需要去儘可能List<object>
:
List<object> objects = new List<object>();
objects.Add("hello"); // A String
objects.Add(5); // An Int32
objects.Add(new Button());
objects.Add(Guid.NewGuid());
請注意,在這種情況下,值類型值將被裝箱 - 但它們不會在特定值類型的列表中。
要使用任何類型特定的元素成員,您需要檢查它們是否是正確的類型並投射它們,例如,與is
和鑄造,或as
:
string maybeString = objects[0] as string;
if (maybeString != null)
{
Console.WriteLine("String of length {0}", maybeString.Length);
}
1
好,你需要做出的排行榜商店中最常見的分母;如果你想存儲任何東西,你需要一個List<object>()
或者List<IMyCommonInterface>()
。然而,根據我的經驗,如果你發現自己編碼這樣,你可能想重新考慮你的架構。
也許你可以解釋你試圖實現的解決方案?
相關問題
- 1. VB.NET如何存儲多個對象(不同類的類型)
- 2. 類型集合的對象不能被序列化
- 3. 休眠可以映射不同對象類型的Java集合嗎?
- 4. 如何在c#中的集合中保存不同類型的對象?
- 5. C# - 不同類型的對象列表
- 6. 在SQLite中存儲對象。可能嗎?
- 7. 如何在列表存儲器不同的數據類型C#
- 8. 如何實現可用於不同類型對象的功能?
- 9. 我如何不同的對象存儲在一個列表
- 10. 如何在列表中創建和存儲類的對象
- 11. 如何保存和加載不同類型的對象?
- 12. 用於存儲最近列表的.NET集合類型
- 13. 無法在名稱處存儲_SwiftValue類型的對象。只能存儲NSNumber,NSString,NSDictionary和NSArray類型的對象。'
- 14. DDD:存儲庫是內存中的對象集合嗎?
- 15. 集團和聚合對象的列表
- 16. MongoDb在集合中選擇不同的對象類型
- 17. 將不同的對象類型添加到c#4.0集合
- 18. 實體框架CF可以存儲「對象類型」值嗎?
- 19. 我怎麼可以在不同類型的對象存儲在C#泛型列表
- 20. 如何保存不同類型的集合?
- 21. 如何創建一個可以容納不同類型對象的列表?
- 22. 存儲派生對象的泛型類的列表
- 23. VB .Net列表框和對象集合
- 24. C# - 列表存儲可空類型
- 25. 可以jsp:param存儲一個集合嗎?
- 26. 不同的EF屬性數據類型比存儲層可能嗎?
- 27. 如何最好地將對象存儲在可能有許多不同類型的CoreData關係屬性中?
- 28. 如何創建不同類型表單的集合?
- 29. 從單個對象繼承的不同類型的集合與超級對象的單個集合
- 30. 如何在指針數組中存儲不同類的對象
我總是覺得通過`as`檢查類型通常是不被接受的嗎? – 2014-05-22 05:24:36