2012-01-27 83 views
3

我有這個數據可以是非常大的大小,這可能是一個xmlstring,數據集,datatable,datarowcollection。這些數據將與其類型一起傳遞給泛型方法。Convert.ChangeType()是否創建對象的副本或返回原始對象的引用?

void GenericMethod(object data, Type t) 
{ 
    var d = Convert.ChangeType(data, t); 
    //some tasks to do 
} 

問題:如果數據是1GB,ChangeType是否會創建另一個1GB的對象呢? 我只是想確定一下,因爲內存使用情況。

回答

3

Convert.ChangeType調用實例的IConvertible實現,它可以自由地執行任何想要的操作。

如果傳遞的對象沒有執行IConvertible,則拋出異常。

+0

確定嗎? MSDN上的示例IConvertable實現調用Convert.ChangeType。這又會調用IConvertable來更改類型? http://msdn.microsoft.com/en-us/library/system.iconvertible.aspx – 2012-01-27 06:45:59

+0

@EricJ .:它調用'double'上的ChangeType(),而不是它本身。 – SLaks 2012-01-27 06:46:43

+0

這是否意味着,如果沒有異常被拋出,沒有創建副本? – jerjer 2012-01-27 07:02:24

相關問題