कैसे एक सरणी शाब्दिक वापस C # में


87

मैं निम्नलिखित कोड की कोशिश कर रहा हूँ। त्रुटि वाली रेखा को इंगित किया गया है।

int[] myfunction()
{
    {
      //regular code
    }
    catch (Exception ex)
    {                    
       return {0,0,0}; //gives error
    }
}

मैं स्ट्रिंग लीटर की तरह एक सरणी शाब्दिक कैसे लौटा सकता हूं?


4
यह भी कुछ भी नहीं है कि C # में वास्तव में सरणी शाब्दिक नहीं है, लेकिन एक सरणी आरंभीकरण सिंटैक्स - जिसके लिए स्वीकृत उत्तर संदर्भित करता है। साहित्य इस मायने में खास है कि उन्हें सीधे क्रमबद्ध किया जा सकता है, और उन्हें constखेतों में सौंपा जा सकता है । यह सरणी आरंभीकरण सिंटैक्स के साथ ऐसा नहीं है।
— cwharris 21

जवाबों:


164

intइस तरह की एक सरणी लौटें :

return new int [] { 0, 0, 0 };

आप यह भी सरणी टाइप कर सकते हैं - संकलक अनुमान लगाएगा कि यह होना चाहिए int[]क्योंकि इसमें केवल intमान शामिल हैं:

return new [] { 0, 0, 0 };

6
वाह हो, मुझे नहीं पता था कि तुम स्पष्ट रूप से सरणियाँ लिख सकते हो! +1
— क्रिस सिनक्लेयर

1
मैंने पाया कि new int [] {0,0,0}काम भी करता है। यह मेरी राय में स्पष्ट होगा।
— सरग

3
@sgarg जो उत्तर के समान प्रतीत होता है। और मैं असहमत हूं, सरणी की निहित टाइपिंग का मतलब है कि स्थिरांक को फ़्लोटिंग पॉइंट में बदलना स्वचालित रूप से सही सरणी प्रकार प्राप्त करेगा।
— नेटमैज

12

Blorgbeard सही है, लेकिन आप .NET 4.0 टूप्ले वर्ग के लिए नए का उपयोग करने के बारे में भी सोच सकते हैं। मैंने पाया कि जब आपके पास लौटने के लिए मदों की एक निर्धारित संख्या होती है, तो इसके साथ काम करना आसान होता है। जैसे कि यदि आपको हमेशा अपने एरे में 3 आइटम वापस करने की आवश्यकता होती है, तो 3-इंट ट्यूपल यह स्पष्ट करता है कि यह क्या है।

return new Tuple<int,int,int>(0,0,0);

या केवल

return Tuple.Create(0,0,0);

2
यदि आपके पास मदों की एक परिवर्तनीय संख्या है, लेकिन कुछ अतिरिक्त कार्यक्षमता चाहते हैं, तो आप यह भी कर सकते हैं:return new List<int>(new int[]{0,0,0});
— डेव

1
@ क्या List<int>(Enumerable.Repeat(0, 3))बेहतर नहीं होगा?
— नेटमैज

@NetMage यदि आप निश्चित रूप से वस्तुओं की संख्या में अंतर करना चाहते हैं तो बेहतर होगा।
— डेव

9

यदि सरणी का एक निश्चित आकार है और आप शून्य से भरा नया लौटना चाहते हैं

return new int[3];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.