2012-01-27 2 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

예외가 throw되지 않으면 복사가 생성되지 않았다는 의미입니까? – jerjer

관련 문제