2011-09-23 11 views
5

मैं निम्नलिखित struct है:सी # 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 से सावधान रहें, यह काफी असामान्य है। और CharSet.Ansi के लिए अच्छी बाधाएं अगर यह सी कोड के साथ interops।

+0

यह काम नहीं करता है। बाद में मैंने Marshal.StructureToPtr के साथ एक सूचक को यह संरचना मार्शल (myAttributes, PTR झूठी); इस स्ट्रिंग को छोड़कर अन्य सभी फ़ील्ड अच्छे कर रहे हैं। – Juergen

+2

मुझे नहीं पता कि "काम नहीं करता" का क्या अर्थ हो सकता है। मार्शल। संरचना टीओपीआरआर इस तरह की घोषणा के साथ कोई परेशानी नहीं है। आप गलत क्या देखते हैं इसके बारे में स्पष्ट रहें। और CharSet के बारे में मेरी टिप्पणी नोट करें। –

संबंधित मुद्दे