[英]Do generics do boxing / unboxing when I keep Object type to the collection
如果我有一個列表,其中包含Object
,如下所示:
List<object> t = new List<object>();
t.Add(10);
t.Add("xyx");
在這種情況下,如果我取回列表項,我需要取消它們嗎?
如果您使用了一個對象來保存值類型,則只會出現“取消裝箱”。
在你的例子中, t.Add(10);
確實將int值類型裝入對象,因此在訪問它時必須將其取消裝箱。
但是, t.Add("xyx");
正在添加一個字符串引用類型,因此它不會被裝箱,並且在您訪問它時不需要取消裝箱。
但是,在這兩種情況下,必須將值轉換為正確的類型才能以該類型訪問它。
如果你需要像特定類型的對象那樣對待它們,是的。
var o = t[0]; //this is object
var i = (int)t[0]; //this is int
這取決於。 如果您想將其用作特定類型,那么是。 否則,您可以將它們用作對象。
是的,您必須將它們拆箱到特定類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.