C# 数组长度需要变化时怎么定义?
展开全部
"C#里面数组是无法动态改变大小的,这是因为数组定义时声明的是Array类,而Array类是不能重新定义大小的。如果你想创建一个动态大小的数组,则可以用ArrayList类,如下:System.Collections.ArrayList aa=new System.Collections.ArrayList();在使用的时候,可以用aa.Add方法向里面添加元素,Remove删除元素,可以向数组下标一样访问,不过在使用的时候,最好对一个元素进行类型的强制转换。
展开全部
通常,创建一个数组后就不能调整其长度,但是Array类提供了一个静态方法CreateInstance用来创建一个动态数组,所以可以通过它来动态调整数组的长度。
namespace ArrayManipulation
{
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)
{
//determine the type of element
Type t = origArray.GetType().GetElementType();
//create a number of elements with a new array of expectations
//new array type must match the type of the original array
Array newArray = Array.CreateInstance (t, desiredSize);
//copy the original elements of the array to the new array
Array.Copy (origArray, 0, newArray, 0, Math.Min (origArray.Length, desiredSize));
//return new array
return newArray;
}
//print array
public static void PrintArr (int[] arr)
{
foreach (int x in arr)
{
Console.Write (x + ",");
}
Console.WriteLine ();
}
}
}
namespace ArrayManipulation
{
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)
{
//determine the type of element
Type t = origArray.GetType().GetElementType();
//create a number of elements with a new array of expectations
//new array type must match the type of the original array
Array newArray = Array.CreateInstance (t, desiredSize);
//copy the original elements of the array to the new array
Array.Copy (origArray, 0, newArray, 0, Math.Min (origArray.Length, desiredSize));
//return new array
return newArray;
}
//print array
public static void PrintArr (int[] arr)
{
foreach (int x in arr)
{
Console.Write (x + ",");
}
Console.WriteLine ();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询