c#中的数组

来源:互联网 发布:淘宝达人网站 编辑:程序博客网 时间:2024/06/11 20:56

 Array是所有数组的基类。所以用普通方法创建的数组可以使用Array创建的数组实例上的所有方法和属性。

创建:

数组的length可以用变量赋值,但是在赋值之前这个变量必须初始化。

一维

int [] arr = new int [length];

Array arr = Array.CreateInstance(typeof(string),length)

高维

int [,] arr = new int 【length1,length2......】

Array arr = Array.CreateInstance(typeof(string),length1,length2...)


遍历

foreach(int i in arr)

{

}

一维或高维都可以用一个foreach来解决。

如果用for的话就不行了。


设置和获取指定位置的值

            

             for (int i = 0; i < arr.GetLength(0); i++) <span style="color:#FF0000;">获取指定维的长度。也可以用system.Array的属性Length,这是所有围度的总长度。</span>             {                 arr.SetValue("cai", i);               <span style="color:#FF0000;">设置指定位置的值</span>                 Console.WriteLine(arr.GetValue(i));   <span style="color:#FF0000;">获取指定位置的值</span>             }

用一维数组封装索引给高维数组的指定位置赋值

          String[, , , , , ,] myArr7 = new String[5, 5, 5, 5, 5, 5, 5];                    <span style="color:#FF0000;">// 创建一个一维的数组,提供7维数组索引的封装。        //当然也可以不封装,只要你喜欢。myArr7.SetValue("one-two-three-zero-one-two-three",1, 2, 3, 0, 1, 2, 3 );</span>         int[] myIndices = new int[7] { 1, 2, 3, 0, 1, 2, 3 };         // 赋值          myArr7.SetValue("one-two-three-zero-one-two-three", myIndices);          //获取值          Console.WriteLine("[1,2,3,0,1,2,3]:   {0}", myArr7.GetValue(myIndices));<span style="background-color: rgb(255, 255, 255);"><span style="color:#FF0000;">//myIndices是index的复数</span></span>


            Console.WriteLine(arr.Rank)<span style="color:#FF0000;">;//获取数组的秩</span>            //  Array.<span style="color:#FF0000;">Sort</span>(arr);只可以用于一维                              //  Array.<span style="color:#FF0000;">Reverse</span>(arr);只可以用于一维               // Array.<span style="color:#FF0000;">IndexOf</span>(arr, 23);
高维中:得到指定围度的最大索引和最小索引,该方法不受为null或0的影响。

 Array my3DIntArray = Array.CreateInstance(typeof(Int32), 2, 3, 4);                       for (int i = my3DIntArray.<span style="color:#FF0000;">GetLowerBound(0)</span>; i <span style="color:#FF0000;"><= </span>my3DIntArray.<span style="color:#FF0000;">GetUpperBound(0)</span>; i++)<span style="color:#FF0000;">//因为获取是索引,所以是<=</span>                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);                    }      //用GetLength(维数)实现同样的功能<pre name="code" class="csharp">            for (int i = 0; i < my3DIntArray.<span style="color:#FF0000;">GetLength(0)</span>; i++)<span style="color:#FF0000;">//因为GetLength(0)获取指定维数的长度.,所以是<</span>                for (int j = 0; j < my3DIntArray.<span style="color:#FF0000;">GetLength(1)</span>; j++)                    for (int k = 0; k < my3DIntArray<span style="color:#FF0000;">.GetLength(2)</span>; k++)                    {                        my3DIntArray.SetValue((i * 100) + (j * 10) + k, i, j, k);                    }




转换

Convert()系列

复制到另一个数组

Copy()系列

全部清空

Clear()

潜克隆

Clone() 仅复制数组的元素,不会复制这些元素所指向的对象(如果这些元素时引用类型的话)

重置大小

Resize(),实际上是先创建一个数组,再进行复制。

获取类型

GetType()


这些都是Array对象的冰山一角。


总之,我们应用面向对象的思想去思考Array应该有哪些功能。然后再去查找MSDN。


而且,以后再用到数组时,不要用普通的方法创建了,应该用Array来创建。因为c#中,一切都是对象。






0 0
原创粉丝点击