パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)


VB.NETの配列とForループの基礎
(準備中)

1.配列の宣言と初期化

(1)配列の宣言
配列の宣言の仕方には以下の通り3つのパターンがあります。
いずれも、
Dim 配列変数 As 型名
という形で宣言します。

Dim name() As String = {"いぬ", "ねこ", "うさぎ", "かめ"}
Dim number(10) As Integer
Dim inputs() As String

一番最初の方法は、宣言において要素の初期化まで行ってしまうやり方です。
2番目の宣言は要素数を指定して宣言する方法です。
最後は要素数も指定せずに宣言する方法です。要素数が未定の時に使うと便利です
(※) 昔のBASICでは要素数を省略すると、暗黙のうちに要素数として10が指定されたことになっていたり
   しましたが、VB.netでは要素数がNULLの状態です。


2.要素数の取得

配列の要素の数を取得するのには、Lengthプロパティを使います(Countでも取得できます)。
またインデックス(添字)の最大数はUBound()関数で取得できます。

最初の方法のように配列の宣言時に初期化した場合は
name.Lengthで要素数を取得すると要素の数として4が取得できます。
インデックスの最大値は、UBound(name)で3がリターンされます。

2番目の要素数を指定する方法の場合
number.Lengthで要素数を取得すると要素の数として10が取得できます。
UBound(number)では9がリターンされます。

最後の要素数を指定しない方法の場合、配列を初期化する(値を代入する)前は
Lengthプロパティ、UBound()関数は使えません(例外が発生する)



3.Forループ

Forループには
伝統的な For ... To..構文と
For Each ...In 構文があります。

後者は
For Each 変数 In 配列やリスト
という構文になります。

Forループを回るごとに変数には配列やリストの各要素が入ります。

実際の実行例をみてみます。
3つのパターンで配列の宣言をしています。
それぞれの配列の要素数を表示し、最後のパターンについては
伝統的なForループと、For Each の両方で各要素を表示しています。

array1.vb

Imports System

Module Program
    Sub Main(args As String())
        Dim name() As String = {"いぬ", "ねこ", "うさぎ", "かめ"}
        Dim number(10), i As Integer
        Dim inputs() As String

        Console.WriteLine("nameのLength:{0}  Count:{1}  UBound:{2}", name.Length, name.Count, UBound(name))
        Console.WriteLine("numberのLength:{0}  Count:{1}  UBound:{2}", number.Length, number.Count, UBound(number))
        ' inputs.Length inputs.Count UBound(inputs)はobjectがnullのため例外が発生する
        '        Console.WriteLine("inputsのLength:{0} Count:{1}UBound:{2}", inputs.Length, inputs.Count, UBound(inputs))
        inputs = Console.ReadLine().Split()
        Console.WriteLine("inputsのLength:{0}  Count:{1}  UBound:{2}", inputs.Length, inputs.Count, UBound(inputs))

        For i = 0 To inputs.Length - 1
            Console.WriteLine(inputs(i))
        Next

        For i = 0 To UBound(inputs)
            Console.WriteLine(inputs(i))
        Next

        For Each s As String In inputs
            Console.WriteLine(s)
        Next

    End Sub
End Module







TopPage > Visual BasIc&Excel活用研究目次