日期:2014-05-17  浏览次数:20766 次

谁学过C/C++,我问个C#的char类型的问题
C#书上说一个char类型是Unicode字符,占两个字节。然后我声明了下面一个数组
char[] sou = { '飞', '2', '3', '\0' };

之后在VC中创建一个DLL,这个DLL必须用 char* 接收上面的字符串才能正确用MessageBoxA输出,如果用wchar_t*接收在用MessageBoxW输出就是乱码

C#的string类型也是一样的现象


------解决方案--------------------
.Net里面的char和c++里面的char是不一样的。看来你是需要做转换才可以正常显示的。
------解决方案--------------------
  [DllImport("user32.dll", CharSet=CharSet.Auto)]
    static extern int MessageBox(IntPtr hWnd, String text, String caption, int options);
------解决方案--------------------
Marshal.StringToHGlobalAnsi(string)
返回的IntPrt就是一个能被MessageBoxA接受的char*