मैंने अधिकांश स्ट्रिंग को char* रूपांतरण SO उत्तरों में देखा है, लेकिन यह मेरे लिए काम नहीं कर रहा है। यहाँ मेरा कोड है:

public static void Main() {
    string name = "ELEM";
    unsafe{
          fixed(char* name_ptr = name) {
              Console.WriteLine(name_ptr->ToString());
          }
    }
} 
// Output: E

मुझे ऐसा करने की ज़रूरत है क्योंकि मुझे अपने सी ++ कस्टम डीएलएल में चार * पास करना होगा। यह केवल पहले वर्ण की प्रतिलिपि क्यों बनाएगा, और मैं स्ट्रिंग को char* में कैसे ठीक से परिवर्तित कर सकता हूं?

2
Taylor 30 नवम्बर 2018, 20:16

1 उत्तर

सबसे बढ़िया उत्तर

आपको पहला अक्षर ही मिलता है, क्योंकि name_ptr एक ही वर्ण के संदर्भ के अलावा और कुछ नहीं है और जब आप name_ptr->ToString() को कॉल करते हैं तो आप वास्तव में char.ToString() को कॉल करते हैं।

सी/सी++ डीएलएल को स्ट्रिंग पास करने के लिए आपको StringBuilder का उपयोग करना चाहिए। देखें यह सवाल

2
Nick 30 नवम्बर 2018, 21:30