C#ToCharArray不适用于char*

Jue*_*gen 5 c# arrays string pointers

我有以下结构:

[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];
}
Run Code Online (Sandbox Code Playgroud)

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

string symbol = "test";
Attributes.MarketSymbol = symbol.ToCharArray();
Run Code Online (Sandbox Code Playgroud)

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

Han*_*ant 3

像这样:

[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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我不知道“不成功”是什么意思。Marshal.StructureToPtr 对于这样的声明没有任何问题。明确指出你所看到的问题所在。请注意我对 CharSet 的评论。 (2认同)