2011-08-26 15 views
17

क्या इन दोनों तरीकों और जब आप अन्य के बजाय एक का प्रयोग करेंगे के बीच का अंतर है?अंतर (0)

int[,] array = new int[4,3]; 
int length0 = array.GetLength(0); 
int upperbound0 = array.GetUpperBound(0); 

MSDN का कहना है कि GetLength तत्वों जहां GetUpperBound अधिकतम सूचकांक का निर्धारण के रूप में की संख्या लौटने के लिए, लेकिन यह कैसे अलग के बाद से सरणियों प्रत्येक सूचकांक के लिए तत्वों के साथ प्रारंभ कर रहे हैं हो सकता है?

+4

आप मान निम्न बाउंड हमेशा होता है शून्य। यह नहीं। आमतौर पर –

उत्तर

31

इस (शायद ही कभी इस्तेमाल) विधि पर एक नजर डालें। MSDN से:

public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds)

निर्दिष्ट कम सीमा के साथ, निर्दिष्ट प्रकार और आयाम लंबाई की एक बहुआयामी सरणी बनाता है।

इसके साथ, आप -5 ... +5 से सूचकांक के साथ एक सरणी बना सकते हैं। क्या तुमने कभी सरणी इस तरह का उपयोग करते हैं, तो GetUpperBound() अचानक एक बहुत अधिक GetLength()-1 से उपयोगी हो जाता है। GetLowerBound() भी मौजूद है।

लेकिन इस तरह के सरणी के लिए सी # समर्थन कम है, आपको केवल उन तरीकों की आवश्यकता होगी जो Array.GetValue()/SetValue() विधियों के साथ संयोजन में हों।

+1

"लेकिन कृपया ऐसा मत करें।"। क्यों नहीं, अगर आप अपने सरणी की सीमाओं के बारे में निश्चित हैं? – Epiplon

+2

मैं केवल प्रयोग करेंगे कि जब मैं _not_ सीमाओं के बारे में यकीन है। –

7

Array.Length अपरबाउंड प्राप्त करने के लिए 1 से घटाकर की आवश्यकता वाले सरणी (तत्वों की संख्या) की लंबाई देता है।

Array.GetUpperBound(0) सरणी के ऊपरी सीमा को वापस देता है, तो आप इसे का उपयोग कर सकते हैं।

2

GetUpperBound सरणी में उच्चतम सूचकांक देता है, GetLength सरणी के तत्वों की संख्या देता है।

अर्थात GetUpperBound = GetLength - 1

+3

। लेकिन ऐसा नहीं है कि यह क्यों प्रदान किया जाता है। –

+0

+1 अपने प्रश्न का उत्तर, नहीं पता था कि आप 0 के अलावा अन्य एक सूचकांक में एक सरणी शुरू कर सकता है! –

1

आम तौर पर, array.GetUpperBound(0) = array.Length - 1, लेकिन जब से हम सरणियों है कि एक अशून्य लोअर बाउंड बना सकते हैं, कि हमेशा सच है।

0

अगर आपके सरणी के लिए बाध्य निचले 0 तो आप किसी भी भ्रम के बिना उनमें से या तो उपयोग कर सकते हैं, लेकिन मैं array.length -1 की सिफारिश करेंगे के रूप में यह व्यापक रूप से इस्तेमाल किया जाता है। हालांकि, अगर आपका सरणी के लोअर बाउंड है 0 से कम है तो आप का उपयोग करना चाहिए array.GetUpperBound (0) क्योंकि इस मामले में array.length -1! = array.getUpperBound (0)

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