这是不是只是将字节组合起来“编码”数据的方式?
我很好奇,因为我想知道RCW如何自动将.NET字符串转换为COM BSTR。我猜它只是从.NET字符串形成一个有效的COM BSTR。
相关问题:我能否使用.NET中的byte类型构造自己的有效BSTR?
这两种字符串类型没有关联。必须进行转换才能将一种类型转换为另一种类型。
BSTR具有许多约定,例如必须通过SysAllocString *分配、使用SysFreeString解除分配、带有长度前缀和以两个空字符结尾的终止符等。
http://msdn.microsoft.com/en-us/library/ms221069.aspx
.Net字符串是一种托管类型,通过托管堆分配。其生存期由CLR垃圾回收器管理。
要构建自己的BSTR,最好使用Marshal.StringToBSTR:
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtobstr.aspx
如果这不够好,您可以使用pinvoke SysAllocString:
System.String
,因为任何构造函数都会将字符数组复制到另一个内存位置。 - codekaizen