.net框架读书笔记---重新调整数组的长度

数组在一般情况下创建之后是不好再次调整其长度的,但是Array提供了一个静态方法CreateInstance可以动态的创建数组,当然还可以用其特性动态的调整一个数组的长度。

 

代码
   
     

namespace ArrayStudy
{
class Program
{
static void Main( string [] args)
{
int [] arr = new int [] { 1 , 2 , 3 };

PrintArr(arr);


arr
= ( int [])Redim(arr, 5 );

PrintArr(arr);

arr
= ( int [])Redim(arr, 2 );

PrintArr(arr);


}

public static Array Redim(Array origArray, int desiredSize)
{
// 确定元素的类型
Type t = origArray.GetType().GetElementType();

// 创建一个含有期望元素个数的新数组
// 新数组的类型必须匹配原数组的类型

Array newArray
= Array.CreateInstance(t, desiredSize);
// 将原数组的元素拷贝至新数组中
Array.Copy(origArray, 0 , newArray, 0 , Math.Min(origArray.Length, desiredSize));

// 返回新数组

return newArray;
}

// 打印数组
public static void PrintArr( int [] arr)
{
foreach ( int x in arr)
{
Console.Write(x
+ " , " );
}
Console.WriteLine();
}
}
}

 

也就是使用CreateInstance重新快速创建数组,然后重新copy,个人感觉应该避免这种操作,因为产生了再次的内存分配和垃圾回收

你可能感兴趣的:(.net)