2009-08-17 2 views
1

실제로 널 포인터 인 문자열을 마샬링하려고하면 어떻게됩니까?[MarshalAs (UnmanagedType.LPStr)]을 사용하여 널 포인터를 마샬링하면 어떻게됩니까?

+1

I 몰라 입력 NULL 값. 그것을 시도하고 우리에게 말해. – JoshJordan

+0

그래, 난 지금 혼란스러워 Interop 변환의 한가운데에있다. 컴파일하기 전에 또 다른 시간이 될 것이고, 별도의 프로젝트에서 많은 시간을 테스트하지 않고도 알고 싶을 것이다. – DevDevDev

답변

2

네이티브에서 관리되는 것까지 null 문자열 개체가 생성됩니다. 관리에서 네이티브로, 당신은 null 포인터를 얻을. 상당히 직관적입니다. :-)

+0

그게 내가 원하는 바야. 빈 문자열이 아닌 null 문자열을 얻고 오류가 발생하지 않습니까? – DevDevDev

+0

네, 맞습니다. –

0

그렇다면 어떻게 생각하십니까? LPstr은 Null로 끝나는 ANSI 문자 배열의 포인터입니다. NULL은 분명히 null로 끝나는 배열에 대한 포인터가 아닙니다. 아마도 NULL 등에서 읽으려고 시도 할 것입니다. 어쨌든 정의되지 않은 동작은 앱을 중단 시키거나 알 수없는 상태로 둡니다. 왜 그걸 원하니? 왜 그것을 mashalling 전에 확인하지?

+0

속성을 검사하려면 어떻게해야합니까? IntPtr을 마샬링해야합니다. – DevDevDev

0

호출하는 항목에 따라 기본 API에 허용되는 입력이 될 수도 있고 그렇지 않을 수도있는 NULL이 전달 될 것이라고 생각합니다. 가장 잘 설계된 C (++) 코드는 이런 종류의 코드를 검사하지만 이중 검사하는 것이 가장 좋습니다.

1

어느 한 방향으로 배열 된 (C 및 C에 대한 NULL 번호 NULL) 경우 NULL 문자열의 각 언어 표현으로 변환 될 것이다