Visual Basic .NET Language
सरणी
खोज…
टिप्पणियों
Dim myArray(2) As Integer
someFunc(myArray)
एक सरणी वस्तुओं का सूचकांक-क्रमबद्ध संग्रह है। सरणी घोषणा में दिए गए प्रकार से ऑब्जेक्ट के प्रकार को परिभाषित किया गया है।
Visual Basic .NET में एरे सबसे अधिक (और डिफ़ॉल्ट रूप से) शून्य (0) आधारित होते हैं, जिसका अर्थ है कि पहला सूचकांक 0. है। 10 तत्वों की एक सरणी में 0-9 की सूचकांक सीमा होगी। सरणी तत्वों तक पहुंचते समय, अधिकतम सुलभ सूचकांक तत्वों की कुल संख्या से कम है। इस वजह से, लूप्स जो एक्सेस ऐरे इंडीकेटमेंट को हमेशा बढ़ाते हैं, उन्हें हमेशा एक रेंज चेक करना चाहिए, जहां वैल्यू ऐरे की लंबाई से कम हो।
सरणी परिभाषा;
Dim array(9) As Integer ' Defines an array variable with 10 Integer elements (0-9).
Dim array = New Integer(10) {} ' Defines an array variable with 11 Integer elements (0-10)
'using New.
Dim array As Integer() = {1, 2, 3, 4} ' Defines an Integer array variable and populate it
'using an array literal. Populates the array with
'4 elements.
ReDim Preserve array(10) ' Redefines the size of an existing array variable preserving any
'existing values in the array. The array will now have 11 Integer
'elements (0-10).
ReDim array(10) ' Redefines the size of an existing array variable discarding any
'existing values in the array. The array will now have 11 Integer
'elements (0-10).
शून्य आधारित
VB.NET में सभी सरणियाँ शून्य-आधारित हैं। दूसरे शब्दों में, VB.NET सरणी में पहले आइटम (निचला बाउंड) का सूचकांक हमेशा 0
। VB के पुराने संस्करण, जैसे VB6 और VBA, डिफ़ॉल्ट रूप से एक-आधारित थे, लेकिन उन्होंने डिफ़ॉल्ट सीमा को ओवरराइड करने का एक तरीका प्रदान किया। VB के पुराने संस्करणों में, निचले और ऊपरी सीमा को स्पष्ट रूप से कहा जा सकता है (जैसे Dim array(5 To 10)
। VB.NET में, अन्य .NET भाषाओं के साथ संगतता बनाए रखने के लिए, उस लचीलेपन को हटा दिया गया था और निचली सीमा के 0
अब हमेशा लागू की जाती है फिर भी,। To
वाक्य रचना अभी भी VB.NET में इस्तेमाल किया जा सकता, रेंज और अधिक स्पष्ट रूप से स्पष्ट कर सकता है उदाहरण के लिए, निम्न उदाहरण ऊपर दिए गए सभी लोगों के लिए समान हैं।:
Dim array(0 To 9) As Integer
Dim array = New Integer(0 To 10) {}
ReDim Preserve array(0 To 10)
ReDim array(0 To 10)
नेस्टेड ऐरे घोषणापत्र
Dim myArray = {{1, 2}, {3, 4}}
एकल-आयाम सरणी घोषित करें और सरणी तत्व मान सेट करें
Dim array = New Integer() {1, 2, 3, 4}
या
Dim array As Int32() = {1, 2, 3, 4}
ऐरे इनिशियलाइज़ेशन
Dim array() As Integer = {2, 0, 1, 6} ''Initialize an array of four Integers.
Dim strings() As String = {"this", "is", "an", "array"} ''Initialize an array of four Strings.
Dim floats() As Single = {56.2, 55.633, 1.2, 5.7743, 22.345}
''Initialize an array of five Singles, which are the same as floats in C#.
Dim miscellaneous() as Object = { New Object(), "Hello", New List(of String) }
''Initialize an array of three references to any reference type objects
''and point them to objects of three different types.
बहुआयामी ऐरे आरंभीकरण
Dim array2D(,) As Integer = {{1, 2, 3}, {4, 5, 6}}
' array2D(0, 0) is 1 ; array2D(0, 1) is 2 ; array2D(1, 0) is 4
Dim array3D(,,) As Integer = {{{1, 2, 3}, {4, 5, 6}}, {{7, 8, 9}, {10, 11, 12}}}
' array3D(0, 0, 0) is 1 ; array3D(0, 0, 1) is 2
' array3D(0, 1, 0) is 4 ; array3D(1, 0, 0) is 7
दांतेदार ऐरे प्रारंभ
कोष्ठक पर ध्यान दें एक दांतेदार सरणी और एक बहुआयामी सरणी के बीच अंतर करने के लिए SubArrays अलग-अलग लंबाई का हो सकता है
Dim jaggedArray()() As Integer = { ({1, 2, 3}), ({4, 5, 6}), ({7}) }
' jaggedArray(0) is {1, 2, 3} and so jaggedArray(0)(0) is 1
' jaggedArray(1) is {4, 5, 6} and so jaggedArray(1)(0) is 4
' jaggedArray(2) is {7} and so jaggedArray(2)(0) is 7
नल अर्रे चर
चूंकि सरणियाँ संदर्भ प्रकार हैं, इसलिए एक सरणी चर शून्य हो सकता है। शून्य सरणी चर घोषित करने के लिए, आपको इसे बिना आकार के घोषित करना होगा:
Dim array() As Integer
या
Dim array As Integer()
यदि एक सरणी रिक्त है की जाँच करने के लिए, परीक्षण देखने के लिए अगर यह Is Nothing
:
Dim array() As Integer
If array Is Nothing Then
array = {1, 2, 3}
End If
मौजूदा सरणी चर को अशक्त करने के लिए, बस इसे Nothing
सेट करें:
Dim array() As Integer = {1, 2, 3}
array = Nothing
Console.WriteLine(array(0)) ' Throws a NullReferenceException
या Erase
उपयोग करें, जो समान कार्य करता है:
Dim array() As Integer = {1, 2, 3}
Erase array
Console.WriteLine(array(0)) ' Throws a NullReferenceException
दो चर से समान एरे को संदर्भित करना
चूंकि सरणियाँ संदर्भ प्रकार हैं, इसलिए एक ही सरणी ऑब्जेक्ट की ओर इशारा करते हुए कई चर होना संभव है।
Dim array1() As Integer = {1, 2, 3}
Dim array2() As Integer = array1
array1(0) = 4
Console.WriteLine(String.Join(", ", array2)) ' Writes "4, 2, 3"
गैर-शून्य कम सीमा
Option Strict On
, हालांकि .NET फ्रेमवर्क गैर-शून्य निचले सीमा के साथ एकल आयाम सरणियों के निर्माण की अनुमति देता है जो वे "वैक्टर" नहीं हैं और इसलिए VB.NET टाइप किए गए सरणियों के साथ संगत नहीं हैं। इसका मतलब है कि उन्हें केवल Array
रूप में देखा जा सकता है और इसलिए सामान्य सरणी (index)
संदर्भ का उपयोग नहीं किया जा सकता है।
Dim a As Array = Array.CreateInstance(GetType(Integer), {4}, {-1})
For y = LBound(a) To UBound(a)
a.SetValue(y * y, y)
Next
For y = LBound(a) To UBound(a)
Console.WriteLine($"{y}: {a.GetValue(y)}")
Next
Option Strict Off
का उपयोग करने के साथ-साथ, आप सरणी को IList
LBound
वापस (index)
सिंटैक्स प्राप्त कर सकते हैं, लेकिन फिर यह एक ऐरे नहीं है, इसलिए आप उस वैरिएबल नाम (और आप) पर LBound
और UBound
उपयोग नहीं कर सकते हैं फिर भी मुक्केबाजी से परहेज नहीं):
Dim nsz As IList = a
For y = LBound(a) To UBound(a)
nsz(y) = 2 - CInt(nsz(y))
Next
For y = LBound(a) To UBound(a)
Console.WriteLine($"{y}: {nsz(y)}")
Next
बहु-आयामी गैर-शून्य कम बाउंडेड सरणियाँ VB.NET बहु-आयामी टाइप किए गए सरणियों के साथ संगत हैं :
Dim nza(,) As Integer = DirectCast(Array.CreateInstance(GetType(Integer),
{4, 3}, {1, -1}), Integer(,))
For y = LBound(nza) To UBound(nza)
For w = LBound(nza, 2) To UBound(nza, 2)
nza(y, w) = -y * w + nza(UBound(nza) - y + LBound(nza),
UBound(nza, 2) - w + LBound(nza, 2))
Next
Next
For y = LBound(nza) To UBound(nza)
Dim ly = y
Console.WriteLine(String.Join(" ",
Enumerable.Repeat(ly & ":", 1).Concat(
Enumerable.Range(LBound(nza, 2), UBound(nza, 2) - LBound(nza, 2) + 1) _
.Select(Function(w) CStr(nza(ly, w))))))
Next
MSDN संदर्भ: Array.CreateInstance