C # रिक्त स्ट्रिंग सरणी घोषित करें


152

मुझे इस कोड का उपयोग करके एक खाली स्ट्रिंग ऐरे की घोषणा करने की आवश्यकता है

string[] arr = new String[0]();

लेकिन मुझे "पद्धति का नाम अपेक्षित" त्रुटि मिलती है।

क्या गलत है?


2
आपको खाली सरणी की आवश्यकता क्यों है? तुम क्या करने की कोशिश कर रहे हो?
श्री टी।

7
@MrT। वास्तव में सवाल के लिए प्रासंगिक नहीं है।
जेम्स

1
@ जेम्स - शायद वह जो भी करने की कोशिश कर रहा है उसे करने का एक और सुरुचिपूर्ण तरीका है।
श्री टी।

4
@aquanat - हालाँकि एक उत्तर पहले ही स्वीकार किया जा चुका है और मुझे आपके कोड या इसके पीछे के तर्क का पता नहीं है, मैं विनम्रतापूर्वक आपको सुझाव दूंगा कि आप खाली सरणी को वापस न करें और कॉलिंग फ़ंक्शन से चेक करें कि लौटाया गया मान शून्य है या नहीं नहीं। मुझे लगता है कि यह बहुत अधिक सुरुचिपूर्ण, पठनीय और कुशल होगा।
श्रीमान टी।

2
जिस कारण से आप अशक्त नहीं लौटना चाहते हैं, यह है कि विधि के उपभोक्ता को अशक्त के लिए जाँच करनी है। उदाहरण के लिए, विधि का उपभोक्ता लौटाया गया मान फ़ॉरचैट में रख सकता है और यदि कोई खाली सरणी दी जाती है, तो कोई समस्या नहीं है। हालांकि, यदि शून्य वापस कर दिया गया है, तो लौटाए गए मान को पुन: प्रदर्शित करने से पहले अशक्त के लिए एक चेक होना चाहिए
JAB

जवाबों:


265

इसे इस्तेमाल करे

string[] arr = new string[] {};

1
सभी को धन्यवाद ... मुझसे मत पूछो क्यों, लेकिन एकमात्र तरीका था: स्ट्रिंग [] गिरफ्तारी = नया स्ट्रिंग [0] स्ट्रिंग के रूप में [];
एक्वाटैट

2
आतिश की विधि ने एक स्टूडियो का उपयोग करने के बारे में दृश्य स्टूडियो की शिकायत को काम किया और समाप्त कर दिया जो कि अगर मैं इसे एक बयान में निर्दिष्ट नहीं करता हूं
जो 12

1
अन्य विकल्प हैc# Array.Empty<string>()
१ Bre

68

आपका सिंटैक्स गलत है:

string[] arr = new string[]{};

या

string[] arr = new string[0];

1
क्यों स्ट्रिंग को दोनों उदाहरणों में कैपिटललाइज्ड और कैपिटल नहीं किया गया है
इट्नोटली।

1
@newStackExchangeInstance, प्रश्न से "जैसा है" बस कॉपी किया हुआ कोड है। दोनों लाइनें ठीक संकलित करती हैं, हालांकि मैं मानता हूं कि एक शैली का पालन करना बेहतर है।
आंद्रेई

15

यदि आप .net 4.6 का उपयोग कर रहे हैं, तो उनके पास कुछ नए वाक्यविन्यास हैं जिनका आप उपयोग कर सकते हैं:

using System;  // To pick up definition of the Array class.

var myArray = Array.Empty<string>();

अच्छी चाल! और यह IList <T>: IList <string> x = Array.Empty <string> () के साथ भी काम करता है;
ZunTzu


8

एरर्स के निर्माता अलग हैं। खाली स्ट्रिंग सरणी बनाने के कुछ तरीके इस प्रकार हैं:

var arr = new string[0];
var arr = new string[]{};
var arr = Enumerable.Empty<string>().ToArray()

(क्षमा करें, मोबाइल पर)


1

उन घुंघराले चीजों को कभी-कभी याद रखना मुश्किल होता है, यही कारण है कि उत्कृष्ट दस्तावेज हैं :

// Declare a single-dimensional array  
int[] array1 = new int[5];

इस उत्तर को संपादित करने की आवश्यकता नहीं है, क्योंकि उत्तर गेराल उद्देश्य की पूर्ति करते हैं, न कि विशिष्ट प्रश्न के प्रति। यह जवाब देता है कि "किसी सरणी को घोषित करने और शुरू करने के लिए वाक्यविन्यास क्या है" और मेरे द्वारा पोस्ट किए गए लिंक से एक उद्धरण है। ओपी जगह ले सकता है intके साथ stringअगर वह पसंद करती है।
कोडकेस्टर

1

आपका सिंटैक्स अमान्य है।

string[] arr = new string[5];

यह arrस्ट्रिंग का एक संदर्भित सरणी बनाएगा , जहां इस सरणी के सभी तत्व हैं null। (चूंकि तार संदर्भ प्रकार हैं )

इस सरणी से तत्व शामिल arr[0]करने के लिए arr[4]newऑपरेटर सरणी बना सकते हैं और उनके डिफ़ॉल्ट मानों के सरणी तत्वों प्रारंभ करने में प्रयोग किया जाता है। इस उदाहरण में, सभी सरणी तत्वों को आरंभीकृत किया गया है null

Single-Dimensional Arrays (C# Programming Guide)


सभी को धन्यवाद ... मुझसे मत पूछो क्यों, लेकिन एकमात्र तरीका था: स्ट्रिंग [] गिरफ्तारी = नया स्ट्रिंग [0] स्ट्रिंग के रूप में [];
एक्वाटैट

0

यदि आप एक खाली सरणी बनाना चाहते हैं तो आप यह कर सकते हैं:

string[] arr = new string[0];

यदि आप आकार के बारे में नहीं जानते हैं तो आप List<string>जैसे चाहें वैसे उपयोग कर सकते हैं

var valStrings = new List<string>();

// do stuff...

string[] arrStrings = valStrings.ToArray();

मुझे खेद है। मैंने गलती से आपके पोस्ट को गलत संपादन के साथ बर्बाद कर दिया।
सोनर ग्नूएल

-3

निम्नलिखित को ठीक काम करना चाहिए।

string[] arr = new string[] {""};

5
यह एक खाली सरणी नहीं है, क्योंकि इसमें एक तत्व है जो एक खाली स्ट्रिंग है। arr.Length () वापसी होगी 1.
गिलर्मो प्रांडी

यह एक खाली सरणी नहीं हो सकती है, लेकिन मुझे यह उत्तर सुरक्षित लगता है। धन्यवाद! एक ऊपर!
23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.