나는 B의왜 char의 저장소 크기가 변경되는 것입니까?
char c = 'A';
byte[] b = BitConverter.GetBytes(c);
길이 내가 상호 운용성을 위해 다음과 같은 구조체가있는 경우
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct MyStruct
{
int i;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
char[] c;
public int TheInt
{
get { return i; }
set { i = value; }
}
public string TheString
{
get { return new string(c); }
set { c = value.ToCharArray(); }
}
}
다음 할, 그러나 2
이다 할 경우
MyStruct m = new MyStruct();
m.TheInt = 10;
m.TheString = "Balloons";
int mSize = Marshal.SizeOf(m);
MSIZE 내가 예상 한대로 20이 아닌 12 점입니다.
MSDN은 char 저장소가 2 바이트라고 말합니다. 첫 번째 예는 이것을 지원합니다.
구조체에 문제가 있습니까? 내가 빠진 것이 있습니까?
그걸 정렬했습니다! 지금 몇 시간 동안 그것을 괴롭혔다면, CharSet 속성에 대해 생각하지 않았습니다. 구조체에 문자열이 들어있을 때만 사용했습니다. 내 하마를 고쳐 줘서 고마워. – JasonB