2010-04-12 32 views
10
 char character = 'c'; 
     string str = null; 
     str = character.ToString();//this is ok 

     char[] arrayChar = { 'a', 'b', 'c', 'd' }; 
     string str2 = null; 
     str2 = string.Copy(arrayChar.ToString());//this is not ok 
     str2 = arrayChar.ToString();//this is not ok. 

मैं चार सरणी को स्ट्रिंग में बदलने की कोशिश कर रहा हूं, लेकिन पिछले दो प्रयास काम नहीं करते हैं। मुझे मिला अन्य स्रोत और उन्हें नया स्ट्रिंग प्रकार बनाना है, लेकिन मुझे नहीं पता कि क्यों। क्या कोई मुझे थोड़ा सा व्याख्या दे सकता है, धन्यवाद।सी # स्ट्रिंग के लिए चार और चार सरणी असाइन करें?

उत्तर

25

आपको एक नई स्ट्रिंग बनाने की आवश्यकता है।

arrayChar.ToString()char[] प्रकार के लिए "ToString" विधि को कॉल करता है, जो अक्षरों को स्ट्रिंग बनाने के लिए ओवरलोड नहीं किया गया है, बल्कि एक स्ट्रिंग बनाने के लिए जो निर्दिष्ट करता है कि प्रकार वर्णों की एक सरणी है। यह आपको वह व्यवहार नहीं देगा जो आप चाहते हैं।

str2 = new string(arrayChar); के माध्यम से, एक नई स्ट्रिंग का निर्माण, हालांकि, आपको वह व्यवहार देगा जो आप चाहते हैं।

समस्या यह है कि, सी # (सी ++ के विपरीत) में, एक स्ट्रिंग वर्णों की सरणी के समान नहीं होती है। ये दो अलग-अलग प्रकार हैं (भले ही वे उसी डेटा का प्रतिनिधित्व कर सकें)। तारों को वर्णों के रूप में समझा जा सकता है (स्ट्रिंग लागू IEnumerable<Char>), लेकिन सीएलआर का संबंध है, जहां तक ​​वर्णों के समान प्रकार नहीं है। रूपांतरण करने के लिए कोड को दो के बीच कनवर्ट करने की आवश्यकता होती है - और स्ट्रिंग कन्स्ट्रक्टर इस तंत्र को प्रदान करता है।

+0

अब वह उत्तर है जिसे मैं ढूंढ रहा हूं। धन्यवाद रीड। – Bopha

+0

वास्तव में, सी ++ में, एक "स्ट्रिंग" एक "वर्णों की सरणी" नहीं है। थोड़ा और सटीक बनें। सी ++ "स्ट्रिंग" में एक वर्ग (std :: string, std :: wstring) है जो _ ** एक चरित्र सरणी से ** अंतर्निहित रूपांतरण ** construtor_ होने के लिए होता है। यह "एक चार सरणी होने" से बहुत अलग है। या, यदि आप 'सी-स्ट्रिंग' के बारे में बात कर रहे हैं, तो यह नल-टर्मिनेटेड वर्ण सरणी के रूप में एन्कोड किए गए तारों की सी-भाषा धारणा है। सी नहीं ++। विभिन्न भाषाएं। इसके अलावा, सब ठीक है। – quetzalcoatl

7
new string(arrayChar); 
+0

दिमाग को समझाने के लिए कि नई स्ट्रिंग क्यों बनाना है? – Bopha

+0

क्या आप ऐसा नहीं करना चाहते हैं? –

+1

@ बोफा: मैंने आपके जवाब में यह बताने की कोशिश की - क्या इससे मदद मिलती है? @Andrey: सही उत्तर होने के लिए +1 भी :) –

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