Vb.net-arrays

提供:Dev Guides
移動先:案内検索

VB.Net-配列

配列には、同じタイプの要素の固定サイズの順次コレクションが格納されます。 配列はデータのコレクションを格納するために使用されますが、配列を同じタイプの変数のコレクションと考える方が便利な場合がよくあります。

すべての配列は、連続したメモリ位置で構成されています。 最下位アドレスは最初の要素に対応し、最上位アドレスは最後の要素に対応します。

VB.Netの配列

VB.Netで配列を作成する

VB.Netで配列を宣言するには、Dimステートメントを使用します。 例えば、

Dim intData(30)   ' an array of 31 elements
Dim strData(20) As String   ' an array of 21 strings
Dim twoDarray(10, 20) As Integer    'a two dimensional array of integers
Dim ranges(10, 100)  'a two dimensional array

配列を宣言しながら、配列要素を初期化することもできます。 例えば、

Dim intData() As Integer = {12, 16, 20, 24, 28, 32}
Dim names() As String = {"Karthik", "Sandhya", _
"Shivangi", "Ashwitha", "Somnath"}
Dim miscData() As Object = {"Hello World", 12d, 16ui, "A"c}

配列内の要素は、配列のインデックスを使用して保存およびアクセスできます。 次のプログラムはこれを示しています-

Module arrayApl
   Sub Main()
      Dim n(10) As Integer ' n is an array of 11 integers '
      Dim i, j As Integer
      ' initialize elements of array n '

      For i = 0 To 10
          n(i) = i + 100 ' set element at location i to i + 100
      Next i
      ' output each array element's value '

      For j = 0 To 10
          Console.WriteLine("Element({0}) = {1}", j, n(j))
      Next j
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Element(0) = 100
Element(1) = 101
Element(2) = 102
Element(3) = 103
Element(4) = 104
Element(5) = 105
Element(6) = 106
Element(7) = 107
Element(8) = 108
Element(9) = 109
Element(10) = 110

動的配列

動的配列とは、プログラムの必要に応じてディメンション化および再ディメンション化できる配列です。 ReDim ステートメントを使用して動的配列を宣言できます。

ReDimステートメントの構文-

ReDim [Preserve] arrayname(subscripts)

どこで、

  • Preserve キーワードは、サイズを変更するときに、既存の配列のデータを保持するのに役立ちます。
  • arrayname は、再次元化する配列の名前です。
  • subscripts は新しい次元を指定します。
Module arrayApl
   Sub Main()
      Dim marks() As Integer
      ReDim marks(2)
      marks(0) = 85
      marks(1) = 75
      marks(2) = 90

      ReDim Preserve marks(10)
      marks(3) = 80
      marks(4) = 76
      marks(5) = 92
      marks(6) = 99
      marks(7) = 79
      marks(8) = 75

      For i = 0 To 10
         Console.WriteLine(i & vbTab & marks(i))
      Next i
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

0   85
1   75
2   90
3   80
4   76
5   92
6   99
7   79
8   75
9   0
10  0

多次元配列

VB.Netは多次元配列を許可します。 多次元配列は、長方形配列とも呼ばれます。

次のように文字列の2次元配列を宣言できます-

Dim twoDStringArray(10, 20) As String

または、整数変数の3次元配列-

Dim threeDIntArray(10, 10, 10) As Integer

次のプログラムは、2次元配列の作成と使用を示しています-

Module arrayApl
   Sub Main()
      ' an array with 5 rows and 2 columns
      Dim a(,) As Integer = {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}}
      Dim i, j As Integer
      ' output each array element's value '

      For i = 0 To 4
          For j = 0 To 1
              Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i, j))
          Next j
      Next i
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

a[0,0]: 0
a[0,1]: 0
a[1,0]: 1
a[1,1]: 2
a[2,0]: 2
a[2,1]: 4
a[3,0]: 3
a[3,1]: 6
a[4,0]: 4
a[4,1]: 8

ギザギザの配列

ジャグ配列は、配列の配列です。 次のコードは、整数の_scores_という名前のギザギザの配列を宣言することを示しています-

Dim scores As Integer()() = New Integer(5)(){}

次の例は、ギザギザの配列の使用を示しています-

Module arrayApl
   Sub Main()
      'a jagged array of 5 array of integers
      Dim a As Integer()() = New Integer(4)() {}
      a(0) = New Integer() {0, 0}
      a(1) = New Integer() {1, 2}
      a(2) = New Integer() {2, 4}
      a(3) = New Integer() {3, 6}
      a(4) = New Integer() {4, 8}
      Dim i, j As Integer
      ' output each array element's value

      For i = 0 To 4
         For j = 0 To 1
            Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i)(j))
         Next j
      Next i
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8

配列クラス

Arrayクラスは、VB.Netのすべての配列の基本クラスです。 これはSystem名前空間で定義されています。 Arrayクラスは、配列を操作するためのさまざまなプロパティとメソッドを提供します。

配列クラスのプロパティ

次の表は、 Array クラスの最も一般的に使用される*プロパティ*の一部を示しています-

Sr.No Property Name & Description
1

IsFixedSize

配列のサイズが固定されているかどうかを示す値を取得します。

2

IsReadOnly

配列が読み取り専用かどうかを示す値を取得します。

3

Length

配列のすべての次元の要素の総数を表す32ビット整数を取得します。

4

LongLength

配列のすべての次元の要素の総数を表す64ビット整数を取得します。

5

Rank

配列のランク(次元数)を取得します。

配列クラスのメソッド

次の表は、 Array クラスで最も一般的に使用される methods の一部を示しています-

Sr.No Method Name & Description
1

Public Shared Sub Clear (array As Array, index As Integer, length As Integer)

配列内の要素の範囲を、要素のタイプに応じてゼロ、false、またはnullに設定します。

2

Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, length As Integer)

最初の要素から始まる配列の範囲の要素をコピーし、最初の要素から始まる別の配列に貼り付けます。 長さは32ビット整数として指定されます。

3

Public Sub CopyTo (array As Array, index As Integer)

現在の1次元配列のすべての要素を、指定された宛先配列インデックスから始まる指定された1次元配列にコピーします。 インデックスは32ビット整数として指定されます。

4

Public Function GetLength (dimension As Integer) As Integer

配列の指定された次元の要素の数を表す32ビット整数を取得します。

5

Public Function GetLongLength (dimension As Integer) As Long

配列の指定された次元の要素数を表す64ビット整数を取得します。

6

Public Function GetLowerBound (dimension As Integer) As Integer

配列内の指定された次元の下限を取得します。

7

Public Function GetType As Type

現在のインスタンスのTypeを取得します(Objectから継承)。

8

Public Function GetUpperBound (dimension As Integer) As Integer

配列内の指定された次元の上限を取得します。

9

Public Function GetValue (index As Integer) As Object

1次元配列内の指定された位置の値を取得します。 インデックスは32ビット整数として指定されます。

10

Public Shared Function IndexOf (array As Array,value As Object) As Integer

指定されたオブジェクトを検索し、1次元配列全体で最初に出現したインデックスを返します。

11

Public Shared Sub Reverse (array As Array)

1次元配列全体の要素の順序を逆にします。

12

Public Sub SetValue (value As Object, index As Integer)

1次元配列の指定された位置にある要素に値を設定します。 インデックスは32ビット整数として指定されます。

13

Public Shared Sub Sort (array As Array)

配列の各要素のIComparable実装を使用して、1次元配列全体の要素を並べ替えます。

14

Public Overridable Function ToString As String

現在のオブジェクトを表す文字列を返します(Objectから継承)。

Arrayクラスのプロパティとメソッドの完全なリストについては、Microsoftのドキュメントを参照してください。

次のプログラムは、Arrayクラスのいくつかのメソッドの使用方法を示しています。

Module arrayApl
   Sub Main()
      Dim list As Integer() = {34, 72, 13, 44, 25, 30, 10}
      Dim temp As Integer() = list
      Dim i As Integer
      Console.Write("Original Array: ")

      For Each i In list
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      ' reverse the array
      Array.Reverse(temp)
      Console.Write("Reversed Array: ")

      For Each i In temp
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      'sort the array
      Array.Sort(list)
      Console.Write("Sorted Array: ")

      For Each i In list
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Original Array: 34 72 13 44 25 30 10
Reversed Array: 10 30 25 44 13 72 34
Sorted Array: 10 13 25 30 34 44 72