2011-09-23 45 views
5

我有以下結構:C#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:

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

編譯器將拋出一個錯誤,說它無法從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的評論。 –