更优化更改数组长度
通常我们更改数组长度时,通过创建一个 IList 对象做为中转,然后,移动到一个新数组。这种方式并不是很高效。
最近在 .NET Framework SDK 文档中发现使用 public static Array CreateInstance(Type, int); 方法更高效。
代码如下:
测试代码:
最近在 .NET Framework SDK 文档中发现使用 public static Array CreateInstance(Type, int); 方法更高效。
代码如下:
public static Array Change(Array oldArray, int size)
{
Type type = oldArray.GetType().GetElementType();
Array newArray = Array.CreateInstance(type, size);
int minLen = Math.Min(oldArray.Length, size);
if (minLen > 0)
{
Array.Copy(oldArray, newArray, minLen);
}
return newArray;
}
{
Type type = oldArray.GetType().GetElementType();
Array newArray = Array.CreateInstance(type, size);
int minLen = Math.Min(oldArray.Length, size);
if (minLen > 0)
{
Array.Copy(oldArray, newArray, minLen);
}
return newArray;
}
测试代码:
String[] strs = new String[3];
strs[0] = "0";
strs[1] = "1";
strs[2] = "2";
String[] newStrs = (String[])ResizeArray.Change(strs, 6);
strs[0] = "0";
strs[1] = "1";
strs[2] = "2";
String[] newStrs = (String[])ResizeArray.Change(strs, 6);