2011-09-23 4 views
5

I以下の構造体がありますと言って、C#ToCharArrayはchar *型では動作しません

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

は、コンパイラがエラーをスローします。

[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に文字を書きたいですchar []からchar *に変換できません。 どうすればいいですか?このよう おかげ

+1

多分それは助けます:http://stackoverflow.com/questions/1185269/how-to-convert-fixed-byte-char100-to-managed-char-in-c。 – Samich

答えて

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; 
} 

パック= 1に気をつけて、それは非常に珍しいです。これがCコードと相互に作用するならば、CharSet.Ansiには良い確率があります。

+0

これはうまくいきません。後で、この構造体をMarshal.StructureToPtr(myAttributes、Ptr、false)を持つポインタにマーシャリングします。他のすべてのフィールドは、この文字列を除いて良好に動作しています。 – Juergen

+2

「うまくいかない」とはどういう意味か分かりません。 Marshal.StructureToPtrはこのような宣言に問題はありません。あなたが間違って見えるものについて明示してください。 CharSetについての私のコメントに注意してください。 –

関連する問題