首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急C#结构中数组字符串的解决办法(MarshalAs)

2012-04-04 
急:C#结构中数组字符串的解决方法(MarshalAs)在结构中如何设置[MarshalAs的参数,得到string的数组形式:1.

急:C#结构中数组字符串的解决方法(MarshalAs)
在结构中如何设置[MarshalAs的参数,得到string的数组形式:
1.
我们得再给C#编译器一些信息,告诉它一些字符数组的大小。然后它们在C#下面长得样子就变成这样:

C# code
    [StructLayout(LayoutKind.Sequential)]    public struct LIBHEADER    {        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]        public char[] sLibName;        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]        public char[] sPathToLibrary;        public Int32 iEntries;        public Int32 iUsed;        public UInt16 iSort;        public UInt16 iVersion;        public Boolean fContainsSubDirectories;        public Int32 iReserved;    }

2
如果想去掉后面两句的char数组的转换哪代码如下
C# code
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]    public struct LIBHEADER    {        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]        public string sLibName;        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]        public string sPathToLibrary;        public Int32 iEntries;        public Int32 iUsed;        public UInt16 iSort;        public UInt16 iVersion;        public Boolean fContainsSubDirectories;        public Int32 iReserved;    }



3.那么如何得到同时是字符串而且是数组的字符串呢/

谢谢~~!

[解决办法]
可是 这跟 MarshalAs 又有什么关系呢?

string 到 char[] 一个方法 ToCharArray 就搞定呀
[解决办法]
他可能是要ASCII的数组字符串
[解决办法]
这种情况不要用string,如果坚持,我好像看到过一个非安全代码的声明,用来标记string以c里string的方式传递.

还是在char[] 与 string之间转换一下吧.
MarshalAs的作用是 char[256] sPathToLibrary
[解决办法]
探讨
可是 这跟 MarshalAs 又有什么关系呢?

string 到 char[] 一个方法 ToCharArray 就搞定呀

热点排行