सरणी आकार (लंबाई) C # में


98

मैं सी # में एक सरणी (लंबाई / आइटम की संख्या) का आकार कैसे निर्धारित कर सकता हूं?


1
@ मार्सेलो: ... लेकिन यह अभी भी "मेरे चश्मे कहां हैं" जैसे सरल सवालों का जवाब नहीं दे सकता है। ;)
गुफ़ा

2
"आकार" से आपका क्या तात्पर्य है? बाइट्स में तत्वों या आकार की संख्या?
फ्रेड्रिक मोर्क

2
@fearofawhackplanet मैंने अपवोट किया क्योंकि मुझे लंबाई खोजने की एक ही समस्या थी बहु-आयामी सरणियों के लिए काम नहीं किया और इस प्रश्न के परिणामस्वरूप रैंक और गेटलॉग्रफी (सूचकांक) की खोज की।
द मैथमैजिशियन

1
@fearofawhackplanet मैं इस तथ्य को मानता हूं कि इसके 145,000 विचार हैं, इसकी प्रासंगिकता का एक वसीयतनामा है। Upvoted।
brycejl

जवाबों:


152

यदि यह एक आयामी सरणी है a,

a.Length

के तत्वों की संख्या देगा a

यदि bएक आयताकार बहु-आयामी सरणी है (उदाहरण के लिए, int[,] b = new int[3, 5];)

b.Rank

आयामों की संख्या देगा (2) और

b.GetLength(dimensionIndex)

किसी भी दिए गए आयाम की लंबाई प्राप्त करेंगे (आयामों के लिए 0-आधारित अनुक्रमण - तो b.GetLength(0)3 है और b.GetLength(1)5 है)।

अधिक जानकारी के लिए System.Array प्रलेखन देखें ।

जैसा कि @Lucero टिप्पणियों में बताती है, एक "दांतेदार सरणी" की अवधारणा है, जो वास्तव में एकल आयामी सरणी (आमतौर पर एकल-आयामी) सरणियों से अधिक कुछ नहीं है।

उदाहरण के लिए, एक निम्नलिखित हो सकता है:

int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};

ध्यान दें कि सभी के 3 सदस्यों की cलंबाई अलग-अलग है। इस मामले में, के रूप में पहले c.Lengthके तत्वों की संख्या का संकेत होगा c, (3) और c[0].Length, c[1].Length, और c[2].Length3, 2, और 7 क्रमश: हो जाएगा।


1
पूर्णता के लिए आप दांतेदार सरणियों के काम करने का तरीका भी सूचीबद्ध कर सकते हैं (जैसे int[][]) ;-)
लुसेरो

मैंने इसे माना, @Lernerno, लेकिन यह एक अलग समस्या है - एक सरणी के अंदर चीजों के आकार का पता लगाना - एक दांतेदार सरणी का वास्तव में सिर्फ एकल-आयाम वाला सरणी होता है जिसमें एकल-आयाम वाले सरणियाँ होती हैं, जैसा कि आप जानते हैं। ।
ब्लेयर कॉनरैड

3
बेशक मुझे पता है कि आप सही हैं और इसीलिए मैंने खुद को जवाब लिखने के बजाय एक स्माइली के साथ टिप्पणी को जोड़ा। हालाँकि, सभी .NET newbies के बीच अंतर [,]और [][]स्पष्ट नहीं लगता है, इसलिए यह अभी भी ध्यान देने योग्य हो सकता है कि [][]आपके उत्तर के अर्थ में बहुआयामी सरणी नहीं है।
लुसेरो

2
अच्छा उत्तर। लेकिन, आप चाहते हैं कि परिवर्तन b.GetLength[0] is 3 and b.GetLength[1] is 5होना चाहिए b.GetLength(0) and b.GetLength(1)
दरोगाओं का

29

इस प्रश्न का उत्तर जानने के लिए आप ऐरे के प्रलेखन को देख सकते हैं।

इस विशेष मामले में आपको संभवतः लंबाई की आवश्यकता होगी :

int sizeOfArray = array.Length;

लेकिन चूंकि यह एक ऐसा बुनियादी सवाल है और आपको इसमें कोई संदेह नहीं है, ऐसे ही कई और सवाल हैं, जिनका जवाब देने के बजाय मैं आपको बताऊंगा कि आपको खुद ही इसका जवाब कैसे खोजना है।

विजुअल स्टूडियो इन्टेलिसेंस

जब आप एक चर का नाम टाइप करते हैं और .कुंजी दबाते हैं तो यह आपको उस वस्तु पर उपलब्ध सभी तरीकों, गुणों, घटनाओं आदि की एक सूची दिखाता है। जब आप किसी सदस्य को उजागर करते हैं तो यह आपको इसका संक्षिप्त विवरण देता है कि वह क्या करता है।

एफ 1 दबाएं

यदि आपको कोई ऐसी विधि या संपत्ति मिल जाए जो आप चाहते हैं, लेकिन आप निश्चित नहीं हैं, तो आप कर्सर को इस पर ले जा सकते हैं और मदद प्राप्त करने के लिए F1 दबा सकते हैं। यहां आपको संबंधित जानकारी के लिए अधिक विस्तृत विवरण और लिंक मिलते हैं।

खोज

खोज शब्द size of array in C#कई लिंक देता है जो आपको आपके प्रश्न का उत्तर बताता है और बहुत कुछ। सबसे महत्वपूर्ण कौशलों में से एक जो प्रोग्रामर को सीखना चाहिए, वह यह है कि जानकारी कैसे प्राप्त करें। अपने आप को जवाब खोजने के लिए अक्सर तेज होता है, खासकर अगर वही सवाल पहले पूछा गया हो।

एक ट्यूटोरियल का उपयोग करें

यदि आप C # सीखना शुरू कर रहे हैं तो आपको एक ट्यूटोरियल फॉलो करना आसान हो जाएगा। मैं MSDN पर C # ट्यूटोरियल की सिफारिश कर सकता हूं । यदि आप एक पुस्तक चाहते हैं, तो मैं आवश्यक C # सुझाऊंगा

स्टैक ओवरफ़्लो

यदि आप स्वयं ही उत्तर नहीं खोज पा रहे हैं, तो कृपया स्टैक ओवरफ्लो पर प्रश्न पोस्ट करने के लिए स्वतंत्र महसूस करें। लेकिन हम इसकी सराहना करते हैं यदि आप दिखाते हैं कि आपने पहले स्वयं उत्तर खोजने का प्रयास किया है।


3
अच्छा काम, मार्क, लेकिन एक overkill हो सकता है!
नयन

1
@ नयन: धन्यवाद! हालांकि यह बहुत अच्छा है कि अन्य पोस्टरों से ओपी को अपना उत्तर तेजी से मिला, मुझे लगता है कि शुरुआती लोगों को सिखाने के लिए यह अधिक महत्वपूर्ण है कि उन्हें विशिष्ट प्रश्नों के उत्तर देने के बजाय जानकारी कैसे प्राप्त करें। मुझे आशा है कि ओपी को यह उत्तर उपयोगी लगता है और यह उन्हें सैकड़ों प्रश्न पूछने से बचाता है जो उन्हें स्वयं के उत्तर मिल सकते थे।
मार्क बायर्स

12
+1 इस दृष्टिकोण को लेने के लिए समय लेने के लिए - "एक आदमी को एक मछली दें ..." आदि
पीटर केली

अगर मुझे कभी भी ऐसा ही करना पड़े, तो मैं आपके जवाब के लिए यहाँ ओपी को पुनर्निर्देशित करूँगा =) और हाँ, मैं आपसे पूरी तरह सहमत हूँ!
नयन १

1
यह अच्छा है लेकिन मुझे लगता है कि इसे किसी तरह अपने आप से जोड़ा जाना चाहिए। क्या वे "उत्तर देखने लायक उत्तर" पृष्ठ शुरू नहीं कर सकते? एक बात जो मैं जोड़ूंगा, वह यह है कि प्रश्न पोस्ट करने से पहले स्टैक ओवरफ्लो की जांच करनी चाहिए। अक्सर बार मैं सिर्फ सवाल पोस्ट करना शुरू करता हूं और फिर संबंधित प्रश्न देखता हूं जो पॉपअप होता है। मुझे यकीन नहीं है कि अगर जवाब इंटरनेट पर कहीं मौजूद है तो वह यहां भी नहीं है।
user420667

16

1 आयामी सरणी के लिए

int[] listItems = new int[] {2,4,8};
int length = listItems.Length;

बहुआयामी सरणी के लिए

int length = listItems.Rank;

1 आयाम का आकार प्राप्त करने के लिए

int length =  listItems.GetLength(0);

2
Rankसंपत्ति मदों की संख्या वापस नहीं करता है, यह आयाम की संख्या देता है।
गुफा

मैं 1 आयामी सरणियों द्वारा समर्थित गुणों के लिए दस्तावेज कहां से पा सकता हूं? (यानी, Length, Rank, GetLength)
मिन्ह ट्रॅन


8

Lengthसंपत्ति के साथ ।

int[] foo = new int[10];
int n = foo.Length; // n == 10

5

एकल आयाम सरणी के लिए, आप Lengthसंपत्ति का उपयोग करते हैं:

int size = theArray.Length;

कई आयाम सरणियों के लिए Lengthसंपत्ति सरणी में वस्तुओं की कुल संख्या लौटाती है। आप GetLengthकिसी एक आयाम का आकार पाने के लिए विधि का उपयोग कर सकते हैं :

int size0 = theArray.GetLength(0);

3

अधिकांश सामान्य मामलों में 'लंबाई' और 'गणना' का उपयोग किया जाता है।

सरणी:

int[] myArray = new int[size];
int noOfElements = myArray.Length;

टाइप सूची सूची:

List <int> myArray = new List<int>();
int noOfElements = myArray.Count;

1

यह इस प्रकार है: 1D:

 type[] name=new type[size]  //or =new type[]{.....elements...}

2 डी:

 type[][]name=new type[size][] //second brackets are emtpy

तब जब आप इस सरणी का उपयोग करते हैं:

 name[i]=new type[size_of_sec.Dim]

या आप एक मैट्रिक्स की तरह कुछ घोषित कर सकते हैं

type[ , ] name=new type [size1,size2]

0

अब तक क्या याद किया गया है जो मुझे अचानक चिढ़ गया था:

मुझे सरणी के अंदर वस्तुओं की मात्रा कैसे पता चलेगी? है .Lengthबराबर.Countएक सूची है?

इसका उत्तर है: टाइप X की वस्तुओं की मात्रा जिसे new X[number] आपके द्वारा बनाए गए प्रकार X की एक सरणी में डाल दिया गया है !

उदाहरण के लिए। एक काउंटर का उपयोग: int countItemsInArray = 0और countItemsInArray++अपने सरणी के लिए हर असाइनमेंट के लिए।

( पहले से आवंटित प्रकार X के आइटम (संदर्भ) के new X[number]लिए बनाई गई सरणी में number, आप अपने पहले असाइनमेंट के रूप में किसी भी स्थान पर असाइन कर सकते हैं, उदाहरण के लिए (यदि number= 100 और चर नाम = a) a[50] = new X();

मैं नहीं जानता कि क्या C # सृजन पर किसी सरणी के अंदर प्रत्येक स्थान का प्रारंभिक मान निर्दिष्ट करता है, यदि यह नहीं है या प्रारंभिक मूल्य जिसकी आप तुलना नहीं कर सकते हैं (क्योंकि यह आपके द्वारा सरणी में रखा गया मान हो सकता है), आप ट्रैक करना होगा कि आपके द्वारा पहले से असाइन किए गए एरे के अंदर कौन सी जगहें हैं, यदि आप क्रमिक रूप से शुरू नहीं करते हैं 0(जिस स्थिति में सभी से छोटा हैcountItemsInArray सौंपा जाएगा)।)

अपने प्रश्न में एक सरणी के आकार (लंबाई / मदों की संख्या) के आधार पर / "द्वारा विभाजित" अभी भी बाद के "वैकल्पिक" या के लिए खड़े करने के लिए है को कवर किया जाना ( "मदों की संख्या" मैं बस के रूप में दे दी है "है आइटम की राशि "और अन्य .Lengthजो numberमेरे कोड के मूल्य से ऊपर दिए गए हैं):

C # के पास एक sizeofऑपरेटर ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ) है। अंतर्निहित प्रकारों (जैसे int) के लिए उपयोग करना सुरक्षित है (और केवल प्रकारों पर संचालित होता है (चर नहीं))। इस bप्रकार intबाइट्स में प्रकार की एक सरणी का आकार होगा b.Length * sizeof(int)

(निर्माण की सभी जगह पहले से ही निर्मित होने के कारण, जैसा कि ऊपर उल्लेखित है, और sizeofकेवल प्रकारों पर काम करने के कारण, कोई भी कोड sizeof(variable)/sizeof(type)काम नहीं करेगा या ट्रैकिंग के बिना वस्तुओं की मात्रा प्राप्त करेगा।)

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