次の方法で共有


Array.GetUpperBound メソッド

Array 内の指定した次元の上限を取得します。

Public Function GetUpperBound( _
   ByVal dimension As Integer _) As Integer
[C#]
public int GetUpperBound(intdimension);
[C++]
public: int GetUpperBound(intdimension);
[JScript]
public function GetUpperBound(
   dimension : int) : int;

パラメータ

  • dimension
    上限を指定する Array の 0 から始まる次元。

戻り値

Array 内の指定した次元の上限。

例外

例外の種類 条件
IndexOutOfRangeException dimension が 0 未満です。

または

dimensionRank 以上です。

解説

GetUpperBound の例としては GetUpperBound(0) があり、これは Array の最初の次元のインデックスの上限を返します。 GetUpperBound(Rank - 1)Array の最後の次元の上限を返します。

使用例

GetLowerBoundGetUpperBound を使用して 1 次元配列と多次元配列の 2 つの配列を初期化する方法を次のコード例に示します。

 
Imports System
Imports Microsoft.VisualBasic

Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates a new one-dimensional Array of type Int32.
        Dim my1DIntArray As Array = Array.CreateInstance(GetType(Int32), 5)
        
        ' Uses GetLowerBound and GetUpperBound in the for loop.
        Dim i As Integer
        For i = my1DIntArray.GetLowerBound(0) To my1DIntArray.GetUpperBound(0)
            my1DIntArray.SetValue(i + 1, i)
        Next i 
        ' Displays the bounds and values of the one-dimensional Array.
        Console.WriteLine("One-dimensional Array:")
        Console.WriteLine("Rank" + ControlChars.Tab + "Lower" _
           + ControlChars.Tab + "Upper")
        Console.WriteLine("{0}" + ControlChars.Tab + "{1}" _
           + ControlChars.Tab + "{2}", 0, my1DIntArray.GetLowerBound(0), _
           my1DIntArray.GetUpperBound(0))
        Console.WriteLine("Values:")
        PrintValues(my1DIntArray)
        Console.WriteLine()
        
        ' Creates a new three-dimensional Array of type Int32.
        Dim my3DIntArray As Array = _
           Array.CreateInstance(GetType(Int32), 2, 3, 4)
        
        ' Uses GetLowerBound and GetUpperBound in the for loop.
        Dim j, k As Integer
        For i = my3DIntArray.GetLowerBound(0) _
        To my3DIntArray.GetUpperBound(0)
            For j = my3DIntArray.GetLowerBound(1) _
            To my3DIntArray.GetUpperBound(1)
                For k = my3DIntArray.GetLowerBound(2) _
                To my3DIntArray.GetUpperBound(2)
                    my3DIntArray.SetValue(i * 100 + j * 10 + k, i, j, k)
                Next k
            Next j 
        Next i

        ' Displays the bounds and values of the multidimensional Array.
        Console.WriteLine("Multidimensional Array:")
        Console.WriteLine("Rank" + ControlChars.Tab + "Lower" _
           + ControlChars.Tab + "Upper")
        For i = 0 To my3DIntArray.Rank - 1
            Console.WriteLine("{0}" + ControlChars.Tab + "{1}" _
               + ControlChars.Tab + "{2}", i, my3DIntArray.GetLowerBound(i), _
               my3DIntArray.GetUpperBound(i))
        Next i
        Console.WriteLine("Values:")
        PrintValues(my3DIntArray)
    End Sub
    
    
    Public Shared Sub PrintValues(myArr As Array)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myArr.GetEnumerator()
        Dim i As Integer = 0
        Dim cols As Integer = myArr.GetLength(myArr.Rank - 1)
        While myEnumerator.MoveNext()
            If i < cols Then
                i += 1
            Else
                Console.WriteLine()
                i = 1
            End If
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' One-dimensional Array:
' Rank    Lower    Upper
' 0    0    4
' Values:
'     1    2    3    4    5
' 
' Multidimensional Array:
' Rank    Lower    Upper
' 0    0    1
' 1    0    2
' 2    0    3
' Values:
'     0    1    2    3
'     10    11    12    13
'     20    21    22    23
'     100    101    102    103
'     110    111    112    113
'     120    121    122    123

[C#] 
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates a new one-dimensional Array of type Int32.
      Array my1DIntArray = Array.CreateInstance( typeof(Int32), 5 );

      // Uses GetLowerBound and GetUpperBound in the for loop.
      for ( int i = my1DIntArray.GetLowerBound(0); i <= my1DIntArray.GetUpperBound(0); i++ )
         my1DIntArray.SetValue( i+1, i );

      // Displays the bounds and values of the one-dimensional Array.
      Console.WriteLine( "One-dimensional Array:" );
      Console.WriteLine( "Rank\tLower\tUpper" );
      Console.WriteLine( "{0}\t{1}\t{2}", 0, my1DIntArray.GetLowerBound(0), my1DIntArray.GetUpperBound(0) );
      Console.WriteLine( "Values:" );
      PrintValues( my1DIntArray );
      Console.WriteLine();

      // Creates a new three-dimensional Array of type Int32.
      Array my3DIntArray = Array.CreateInstance( typeof(Int32), 2, 3, 4 );

      // Uses GetLowerBound and GetUpperBound in the for loop.
      for ( int i = my3DIntArray.GetLowerBound(0); i <= my3DIntArray.GetUpperBound(0); i++ )
         for ( int j = my3DIntArray.GetLowerBound(1); j <= my3DIntArray.GetUpperBound(1); j++ )
            for ( int k = my3DIntArray.GetLowerBound(2); k <= my3DIntArray.GetUpperBound(2); k++ )  {
               my3DIntArray.SetValue( (i*100)+(j*10)+k, i, j, k );
            }

      // Displays the bounds and values of the multidimensional Array.
      Console.WriteLine( "Multidimensional Array:" );
      Console.WriteLine( "Rank\tLower\tUpper" );
      for ( int i = 0; i < my3DIntArray.Rank; i++ )
         Console.WriteLine( "{0}\t{1}\t{2}", i, my3DIntArray.GetLowerBound(i), my3DIntArray.GetUpperBound(i) );
      Console.WriteLine( "Values:" );
      PrintValues( my3DIntArray );
   }


   public static void PrintValues( Array myArr )  {
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength( myArr.Rank - 1 );
      while ( myEnumerator.MoveNext() )  {
         if ( i < cols )  {
            i++;
         } else  {
            Console.WriteLine();
            i = 1;
         }
         Console.Write( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/*
This code produces the following output.

One-dimensional Array:
Rank    Lower    Upper
0    0    4
Values:
    1    2    3    4    5

Multidimensional Array:
Rank    Lower    Upper
0    0    1
1    0    2
2    0    3
Values:
    0    1    2    3
    10    11    12    13
    20    21    22    23
    100    101    102    103
    110    111    112    113
    120    121    122    123
*/ 

[C++] 
#using <mscorlib.dll>
using namespace System;
 
void PrintValues( Array* myArr );

void main()  {
 
    // Creates a new one-dimensional Array instance of type Int32.
    Array* my1DIntArray = Array::CreateInstance( __typeof(Int32), 5 );
 
    // Uses GetLowerBound and GetUpperBound in the for loop.
    for ( int i = my1DIntArray->GetLowerBound(0); i <= my1DIntArray->GetUpperBound(0); i++ )
        my1DIntArray->SetValue( __box(i+1), i );
 
    // Displays the bounds and values of the one-dimensional Array.
    Console::WriteLine( "One-dimensional Array:" );
    Console::WriteLine( "Rank\tLower\tUpper" );
    Console::WriteLine( "{0}\t{1}\t{2}", __box(0), __box(my1DIntArray->GetLowerBound(0)), __box(my1DIntArray->GetUpperBound(0)) );
    Console::WriteLine( "Values:" );
    PrintValues( my1DIntArray );
    Console::WriteLine();
 
    // Creates a new three-dimensional Array instance of type Int32.
    Array* my3DIntArray = Array::CreateInstance( __typeof(Int32), 2, 3, 4 );
 
    // Uses GetLowerBound and GetUpperBound in the for loop.
    for ( int i = my3DIntArray->GetLowerBound(0); i <= my3DIntArray->GetUpperBound(0); i++ )
        for ( int j = my3DIntArray->GetLowerBound(1); j <= my3DIntArray->GetUpperBound(1); j++ )
            for ( int k = my3DIntArray->GetLowerBound(2); k <= my3DIntArray->GetUpperBound(2); k++ )  {
                my3DIntArray->SetValue( __box((i*100)+(j*10)+k), i, j, k );
            }
 
    // Displays the bounds and values of the multidimensional Array.
    Console::WriteLine( "Multidimensional Array:" );
    Console::WriteLine( "Rank\tLower\tUpper" );
    for ( int i = 0; i < my3DIntArray->Rank; i++ )
       Console::WriteLine( "{0}\t{1}\t{2}", __box(i), __box(my3DIntArray->GetLowerBound(i)), __box(my3DIntArray->GetUpperBound(i)) );
    Console::WriteLine( "Values:" );
    PrintValues( my3DIntArray );
    }
 
 
void PrintValues( Array* myArr )  {
    System::Collections::IEnumerator* myEnumerator = myArr->GetEnumerator();
    int i = 0;
    int cols = myArr->GetLength( myArr->Rank - 1 );
    while ( myEnumerator->MoveNext() )  {
        if ( i < cols ) {
            i++;
        } 
        else  {
            Console::WriteLine();
            i = 1;
        }
        Console::Write( "\t{0}", myEnumerator->Current );
    }
    Console::WriteLine();
}

 /*
 This code produces the following output.
 
One-dimensional Array:
Rank    Lower   Upper
0       0       4
Values:
        1       2       3       4       5

Multidimensional Array:
Rank    Lower   Upper
0       0       1
1       0       2
2       0       3
Values:
        0       1       2       3
        10      11      12      13
        20      21      22      23
        100     101     102     103
        110     111     112     113
        120     121     122     123
*/ 

[JScript] 
import System;

// Creates a new one-dimensional Array of type Int32.
var my1DIntArray : System.Array = System.Array.CreateInstance( Int32, 5 );

// Uses GetLowerBound and GetUpperBound in the for loop.
for ( var m : int = my1DIntArray.GetLowerBound(0); m <= my1DIntArray.GetUpperBound(0); m++ )
  my1DIntArray.SetValue( Int32(m+1), m );

// Displays the bounds and values of the one-dimensional Array.
Console.WriteLine( "One-dimensional Array:" );
Console.WriteLine( "Rank\tLower\tUpper" );
Console.WriteLine( "{0}\t{1}\t{2}", 0, my1DIntArray.GetLowerBound(0), my1DIntArray.GetUpperBound(0) );
Console.WriteLine( "Values:" );
PrintValues( my1DIntArray );
Console.WriteLine();

// Creates a new three-dimensional Array of type Int32.
var my3DIntArray : System.Array = System.Array.CreateInstance( Int32, 2, 3, 4 );

// Uses GetLowerBound and GetUpperBound in the for loop.
for ( var i : int = my3DIntArray.GetLowerBound(0); i <= my3DIntArray.GetUpperBound(0); i++ )
  for ( var j : int = my3DIntArray.GetLowerBound(1); j <= my3DIntArray.GetUpperBound(1); j++ )
     for ( var k : int = my3DIntArray.GetLowerBound(2); k <= my3DIntArray.GetUpperBound(2); k++ )  {
        my3DIntArray.SetValue( Int32((i*100)+(j*10)+k), i, j, k );
     }

// Displays the bounds and values of the multidimensional Array.
Console.WriteLine( "Multidimensional Array:" );
Console.WriteLine( "Rank\tLower\tUpper" );
for ( var l : int = 0; l < my3DIntArray.Rank; l++ )
  Console.WriteLine( "{0}\t{1}\t{2}", l, my3DIntArray.GetLowerBound(l), my3DIntArray.GetUpperBound(l) );
Console.WriteLine( "Values:" );
PrintValues( my3DIntArray );
 
 
function PrintValues( myArr : System.Array)  {
   var myEnumerator : System.Collections.IEnumerator  = myArr.GetEnumerator();
   var i : int = 0;
   var cols : int = myArr.GetLength( myArr.Rank - 1 );
   while ( myEnumerator.MoveNext() )  {
      if ( i < cols )  {
         i++;
      } else  {
         Console.WriteLine();
         i = 1;
      }
      Console.Write( "\t{0}", myEnumerator.Current );
   }
   Console.WriteLine();
}
 /*
 This code produces the following output.
 
 One-dimensional Array:
 Rank    Lower    Upper
 0    0    4
 Values:
     1    2    3    4    5
 
 Multidimensional Array:
 Rank    Lower    Upper
 0    0    1
 1    0    2
 2    0    3
 Values:
     0    1    2    3
     10    11    12    13
     20    21    22    23
     100    101    102    103
     110    111    112    113
     120    121    122    123
*/ 

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Array クラス | Array メンバ | System 名前空間 | GetLowerBound | Rank