2012-01-27 6 views
3

私はこのサイズのデータ​​を非常に大きくすることができます。これはxmlstring、dataset、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 –

+0

@EricJ .:それは 'double'では' ChangeType() 'を呼び出し、それ自体ではありません。 – SLaks

+0

これは、例外がスローされない場合、コピーが作成されていないことを意味しますか? – jerjer

関連する問題