这两种字符串类型根本不相关.必须进行转换才能将一种类型转换为另一种类型.
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
如果这还不够好,你可以调用SysAllocString:
http://msdn.microsoft.com/en-us/library/ms221458.aspx