는 전시 A에 대해 다음과 같은 코드를 가지고 : 사전에TryGetValue - 초기화되지 않은 값 전달 OK?
string sql;
if (!GetQueries.TryGetValue(type.TypeHandle, out sql))
문서는 키가 발견되지 않는 경우, 참조 유형이 null로 설정됩니다 말한다. 좋아, 괜찮아.
키가 발견되면 변수 'sql'은 어떻게 채워 집니까? 발견 된 키 값이 복제 되었습니까? 발견 된 항목의 개체 유형이 생성 된 후 개체의 내용이 복사됩니까? 안전한가요?
또는 아웃 바운드 개체가 상주 할 수있는 장소를 설정, 호출이 전시 B로 설정해야합니다
var sql = string.Empty;
if (!GetQueries.TryGetValue(type.TypeHandle, out sql))
그런 다음 변수 'SQL'은 초기화되어 객체의 안전한 장소 존재합니다. 내보기에서
(내 질문에 내 C 프로그래밍 일 널 포인터의 내 혐오에서 비롯됩니다.)
['out' C# 참조] (http://msdn.microsoft.com/en-us/library/t3c3bfhx.aspx) "out 인수로 전달 된 변수는 전달되기 전에 초기화 할 필요는 없지만 호출 된 메소드가 리턴하기 전에 메소드에 값을 지정해야합니다. " – Habib