我很想知道是否所有在C#中的轉換都會導致拳擊,如果不是,都會投出昂貴的操作?從Boxing and Unboxing (C# Programming Guide)做所有的C#轉換導致拳擊/拆箱
int i = 123;
// The following line boxes i.
object o = i;
採取
示例此線明顯導致拳擊(包起來int類型爲對象)。 這是一個成本很高的操作,因爲它會創建將被收集的垃圾。
那麼來自2種不同類型的參考類型的演員怎麼樣?那是什麼成本?它能被正確測量嗎? (與前面的例子)
例如:
public class A
{
}
public class B : A
{
}
var obj = new B();
var obj2 = (A)obj; // is this an "expensive" operation? this is not boxing
從一種引用類型轉換爲另一種引用類型時,沒有涉及拳擊。 – BrokenGlass 2012-02-20 18:17:35
它可以適當測量嗎?應該避免嗎? – 2012-02-20 18:18:16
在將一個引用類型投射到另一個引用時,不涉及裝箱,可能會進行轉換。將一個引用類型轉換爲另一個不相關的引用類型可能會很昂貴。 – 2012-02-20 18:21:49