Array.GetUpperBound Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Gets the upper bound of the specified dimension in the Array.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

Public Function GetUpperBound ( _
    dimension As Integer _
) As Integer
public int GetUpperBound(
    int dimension
)

Parameters

  • dimension
    Type: System..::.Int32
    A zero-based dimension of the Array whose upper bound needs to be determined.

Return Value

Type: System..::.Int32
The upper bound of the specified dimension in the Array.

Exceptions

Exception Condition
IndexOutOfRangeException

dimension is less than zero.

-or-

dimension is equal to or greater than Rank.

Remarks

GetUpperBound(0) returns the upper bound for the indexes of the first dimension of the Array, and GetUpperBound(Rank - 1) returns the upper bound of the last dimension of the Array.

This method is an O(1) operation.

Examples

The following code example uses GetLowerBound and GetUpperBound to initialize a one-dimensional array and a multidimensional array.


Public Class Example

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      ' 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.
      outputBlock.Text &= "One-dimensional Array:" & vbCrLf
      outputBlock.Text &= "Rank" + ControlChars.Tab + "Lower" _
         + ControlChars.Tab + "Upper" & vbCrLf
      outputBlock.Text &= String.Format("{0}" + ControlChars.Tab + "{1}" _
         + ControlChars.Tab + "{2}", 0, my1DIntArray.GetLowerBound(0), _
         my1DIntArray.GetUpperBound(0)) & vbCrLf
      outputBlock.Text &= "Values:" & vbCrLf
      PrintValues(outputBlock, my1DIntArray)
      outputBlock.Text &= vbCrLf

      ' 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.
      outputBlock.Text &= "Multidimensional Array:" & vbCrLf
      outputBlock.Text &= "Rank" + ControlChars.Tab + "Lower" _
         + ControlChars.Tab + "Upper" & vbCrLf
      For i = 0 To my3DIntArray.Rank - 1
         outputBlock.Text &= String.Format("{0}" + ControlChars.Tab + "{1}" _
            + ControlChars.Tab + "{2}", i, my3DIntArray.GetLowerBound(i), _
            my3DIntArray.GetUpperBound(i)) & vbCrLf
      Next i
      outputBlock.Text &= "Values:" & vbCrLf
      PrintValues(outputBlock, my3DIntArray)
   End Sub


   Public Shared Sub PrintValues(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal 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
            outputBlock.Text &= vbCrLf
            i = 1
         End If
         outputBlock.Text &= String.Format(ControlChars.Tab + "{0}", myEnumerator.Current)
      End While
      outputBlock.Text &= vbCrLf
   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
using System;
public class Example
{

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      // 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.
      outputBlock.Text += "One-dimensional Array:" + "\n";
      outputBlock.Text += "Rank\tLower\tUpper" + "\n";
      outputBlock.Text += String.Format("{0}\t{1}\t{2}", 0, my1DIntArray.GetLowerBound(0), my1DIntArray.GetUpperBound(0)) + "\n";
      outputBlock.Text += "Values:" + "\n";
      PrintValues(outputBlock, my1DIntArray);
      outputBlock.Text += "\n";

      // 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.
      outputBlock.Text += "Multidimensional Array:" + "\n";
      outputBlock.Text += "Rank\tLower\tUpper" + "\n";
      for (int i = 0; i < my3DIntArray.Rank; i++)
         outputBlock.Text += String.Format("{0}\t{1}\t{2}", i, my3DIntArray.GetLowerBound(i), my3DIntArray.GetUpperBound(i)) + "\n";
      outputBlock.Text += "Values:" + "\n";
      PrintValues(outputBlock, my3DIntArray);
   }


   public static void PrintValues(System.Windows.Controls.TextBlock outputBlock, 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
         {
            outputBlock.Text += "\n";
            i = 1;
         }
         outputBlock.Text += String.Format("\t{0}", myEnumerator.Current);
      }
      outputBlock.Text += "\n";
   }
}
/*
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
*/

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

Array Class

System Namespace

GetLowerBound

Rank