C# ToCharArray 不适用于 char*

标签 c# string pointers arrays

我有以下结构:

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
unsafe public struct Attributes
{

    public OrderCommand Command { get; set; }

    public int RefID { get; set; }

    public fixed char MarketSymbol[30];
}

现在,我想将字符写入字段 MarketSymbol:

string symbol = "test";
Attributes.MarketSymbol = symbol.ToCharArray();

编译器抛出一个错误,说它无法从 char[] 转换为 char*。 我怎么写这个? 谢谢

最佳答案

像这样:

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct Attributes
{
    public OrderCommand Command { get; set; }
    public int RefID { get; set; }
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
    public string MarketSymbol;
}

注意 pack = 1,这是很不寻常的。如果这与 C 代码互操作,那么 CharSet.Ansi 的可能性很大。

关于C# ToCharArray 不适用于 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529462/

相关文章:

c++ - 返回基类对象中的派生对象指针

c++ - SDL_MapRGB,如何使用指向指针的指针获取屏幕->格式

c# - 使用多个线程从 mysql 表中读取数据

c# - 在使用c#导入datagridview之前根据单元格值删除一些行

string - 如何获取 xslt 中子字符串的第二次(第三次...)出现?

c++ - 在空格处拆分字符串并返回 C++ 中的第一个元素

c++ - 使用共享指针双重释放或损坏

c# - WaitAll 和完成事件的线程问题 - 信号触发异常

c# - 带有 ViewModel 绑定(bind)的 WPF ContentControl 不会改变(MVVM Light)

regex - 如何在 Scala 中删除两个特定字符之间的子字符串