运维开发网

c# Rank属性与GetUpperBound方法的深入分析

运维开发网 https://www.qedev.com 2020-02-14 14:28 出处:网络 作者: 网络整理
本篇文章是对c#中的Rank属性与GetUpperBound方法进行了详细的分析介绍,需要的朋友参考下
Array的Rank 属性:

   语法:public int Rank { get; }   得到Array的秩(维数)。

Array而GetUpperBound 方法:

   语法:public int GetUpperBound(int dimension)  用于获取 Array 的指定维度的上限。

--------------------------------------------------------------------------------

示例:

复制代码 代码如下:

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

*/

0

精彩评论

暂无评论...
验证码 换一张
取 消