2012-06-27 11 views
7

मैं त्रुटि हो रही है के लिए एक परिभाषा शामिल नहीं है क्या मुझे आवश्यकता है? मैं ऐसी चीजों को कैसे ढूंढूं?'स्ट्रिंग []' 'कास्ट'

मैं सी # और .NET पर एक नोब हूं, मैं सिर्फ नौकरी पाने के लिए कोड कॉपी कर रहा हूं, इसलिए मेरे साथ बहुत तकनीकी न हो।

+6

अगर mNames एक सरणी कारण है कि आप एक सरणी के लिए यह कास्ट करने के लिए कोशिश करते हैं? –

+0

'नाम' क्या प्रकार है? –

+4

['एन्यूमेरेबल.कास्ट'] (http://msdn.microsoft.com/en-us/library/bb341406.aspx#Y1254) ** निर्दिष्ट ** प्रकार के लिए 'IENumerable' के तत्वों को रोकता है, लेकिन आप प्रकार निर्दिष्ट नहीं किया है। –

उत्तर

18

(1) सुनिश्चित करें कि आप सी # पर काम कर रहे हैं 3.0+

(2) अपने कोड होता है सुनिश्चित करें:

using System.Linq; 

(3) .Cast एक सामान्य तरीका है, आप निर्दिष्ट करने की आवश्यकता प्रकार पैरामीटर, इस तरह:

return mNames.Cast<AnotherType>().ToArray(); 
+0

यह चाल है - धन्यवाद - कोड कॉपी करने के लिए बहुत कुछ :-) – Graham

+0

@ ग्राहम - तो अंत में 'अन्य टाइप' क्या था? –

+0

अन्य टाइप प्रकार – Graham

5

आमतौर पर तब होता है कि जब आप अपनी फ़ाइल के शीर्ष पर using System.Linq; वंचित रह जाएंगे।

आपको काम करने के लिए .NET 3.5 या इससे अधिक का उपयोग करने की भी आवश्यकता होगी। System.Linq असेंबली System.Core.dll में है, जो कि .NET 3.5 या उच्चतर का उपयोग करने वाली परियोजनाओं में डिफ़ॉल्ट रूप से शामिल है।

संपादित

करीब निरीक्षण पर, कि कोड लिखा के रूप में काम कभी नहीं होगा, क्योंकि Enumerable.Cast() विधि सामान्य है, और प्रकार है कि आप कास्ट कर रहे हैं में पारित करने के लिए आप की आवश्यकता है: उदाहरण के लिए mNames.Cast<object>().ToArray();

2

आमतौर पर, आप जैसे प्रकार के तर्क के साथ Cast<T>() एक्सटेंशन विधि को कॉल करते हैं।

वैसे भी, mNames पहले से ही string[] प्रतीत होता है, तो आप इसे किस पर डालना चाहते हैं? object पर कास्टिंग आवश्यक नहीं होगा, क्योंकि object[]string[] से असाइन किया जा सकता है।

+0

अंत में ऑब्जेक्ट का उद्देश्य किसी कारण से ऑब्जेक्ट करने के लिए उभरने का इरादा रख सकता है? –

+0

@ बेनेरएमसीकार्थी की कोई ज़रूरत नहीं है। 'ऑब्जेक्ट []' 'string []' से असाइन किया जा सकता है। – Botz3000

+0

हाँ, आप सही हैं। निश्चित नहीं है कि बिंदु क्या होगा क्योंकि मैं ऑब्जेक्ट के अलावा 'Enumerable.Cast()' का उपयोग करने के लिए स्ट्रिंग डालने के लिए कुछ भी सोचने के लिए संघर्ष कर रहा हूं। –

2

भले ही आप स्पष्ट रूप से "कास्ट" का उपयोग नहीं करते हैं, तो यह संकलन त्रुटि तब भी आती है जब आप लिंक अभिव्यक्तियों का उपयोग करते हैं और "System.Linq का उपयोग करके" भूल जाते हैं।

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