2009-10-22 2 views
10

VB.NET में एक सरणी जो कुछ भी नहीं है या initialised किया जा सकता है या तो और यह शून्य की लंबाई देना लेने के लिए सबसे अच्छा तरीका क्या है?वीबी.नेट में खाली सरणी बनाने का सलाह दिया गया तरीका क्या है?

तीन विकल्प मैं के बारे में सोच सकते हैं:

ReDim oBytes(-1) 

oBytes = New Byte(-1) {} 

oBytes = New Byte() {} 

पहला उदाहरण क्या मेरी कंपनी में डेवलपर्स के सबसे (हम वीबी 6 करने के लिए प्रयोग किया जाता) है हमेशा इस्तेमाल किया है। मैं व्यक्तिगत रूप से तीसरा उदाहरण पसंद करता हूं क्योंकि यह समझना सबसे आसान है कि क्या हो रहा है।

तो क्या सकारात्मक और प्रत्येक दृष्टिकोण के लिए नकारात्मक (विकल्प 2 और 3 बहुत समान मुझे पता कर रहे हैं) कर रहे हैं?


संपादित
तो किसी को भी एक कारण ReDim अन्य से बचने के लिए के बारे में पता है कि क्योंकि यह वीबी दिनों से पकड़ मिली है?

नहीं मुझे लगता है कि जवाब के रूप में स्वीकार नहीं करेंगे कि अगर सब किसी को भी नहीं है कि!

+0

उत्तर –

उत्तर

11

मेरा सुझाव है: oBytes = New Byte() {}

आप क्लासिक वीबी दिनों से Redim की तरह "क्लासिक वीबी-वाद", और अन्य holdovers से बचने के लिए प्रयास करना चाहिए। मैं तीसरे विकल्प की सिफारिश करता हूं।

संपादित

कारण है कि यह से बचने के लिए के बारे में कुछ और जानकारी प्रदान करने के लिए, this MSDN page देखते हैं। जबकि पृष्ठ विशेष रूप से इसके खिलाफ सलाह नहीं देता है, आप देख सकते हैं कि Redim कमियों (और भ्रम के लिए संभावित) से पीड़ित है कि अन्य वाक्यविन्यास नहीं है।

  1. Redim केवल मौजूदा सरणियों पर इस्तेमाल किया जा सकता है। फिर भी, यह new सरणी घोषित करने के लिए अर्थात् समकक्ष है। Redim विज्ञप्ति वर्ष सरणी और उसकी जगह एक नया (इसलिए यह है नहीं के रूप में Redim करने के लिए "पर कील" या "बंद काटना" तत्वों की क्षमता है तो)। इसके अतिरिक्त, यह विनाशकारी है जब तक कि Preserve कीवर्ड का उपयोग नहीं किया जाता है, भले ही कोई असाइनमेंट संकेत न हो कि कोई असाइनमेंट हो रहा है।
  2. क्योंकि Redim एक सरणी नहीं बना सकते हैं (लेकिन केवल मौजूदा सरणियों पर काम कर सकते हैं), यह केवल एक प्रक्रिया के भीतर इस्तेमाल किया जा सकता; श्रेणी स्तर पर आप नए सरणियों बताए के लिए दो चाक्षुष रूप से भिन्न पैटर्न के साथ छोड़, भले ही वे शब्दार्थतः पहचान कर रहे हैं New Byte() {} विधि का उपयोग करने के लिए मजबूर कर रहे हैं,।
+0

से बचने के लिए अतिरिक्त औचित्य प्रदान करने के लिए संपादित किया गया जवाब हां मैं सहमत हूं, इस सवाल को लेकर क्या हुआ है, जहां भी मुझे यह पता चलता है कि पुराने वीबी कोड को हटा दिया जाता है! – stevehipwell

+2

मैं और अधिक सहमत नहीं हो सका। "रीडीम" और "न्यू बाइट (-1)" सिर्फ गलत दिखते हैं। मेरी आंखों में ऐसा लगता है कि यह रेडीम ओबाइट्स (-1 से 0) कह रहा है, ऐसा लगता है कि इसे दो तत्वों की एक सरणी देना चाहिए (जो यह वीबी 6 में होगा)। कृपया, कृपया दुनिया को सिर्फ यह नहीं बता सकता कि VB.net से पहले कोई वीबी नहीं था? कृप्या? –

+0

@ बाइनरी वर्रियर - इस पर आपके साथ 100%! वीबीएनईटी उपयोगिता के अधिकांश मुद्दों के कारण यही कारण है! – stevehipwell

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

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