c#好像不好像vb一样处理动态数组,vb使用redim preserve很方便,c#须使用arraylist类。不知大家还有更好的办法吗?下面本人转帖:我不会用啊,谁整个实例看看。谢谢!madengwei2008的:
//动态调整一维数组长度
public static Array Redim(Array origArray, int length)
{
//确定每个元素的类型
Type t = origArray.GetType().GetElementType();
//创建新的数组
Array newArray = Array.CreateInstance(t, length);
//原数组中的数据拷贝到新数组中
Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
return newArray;
}
//动态调整二维数组长度
public static Array Redim(Array origArray, params int[] lengths)
{
//确定每个元素的类型
Type t = origArray.GetType().GetElementType();
//创建新的数组
Array newArray = Array.CreateInstance(t, lengths);
//原数组中的数据拷贝到新数组中
for (int i = origArray.GetLowerBound(0); i <= Math.Min(origArray.GetUpperBound(0), newArray.GetUpperBound(0)); i++)
for (int j = origArray.GetLowerBound(1); j <= Math.Min(origArray.GetUpperBound(1), newArray.GetUpperBound(1)); j++)
newArray.SetValue(origArray.GetValue(i, j), i, j);
//在这里没有用Copy方法,如果用此方法,会把原数组中所有数据逐个拷贝到新数组中
return newArray;
} //如果在Redim方法中用Copy方法(动态调整二维数组长度)
public static Array Redim(Array origArray, params int[] lengths)
{
int length = 1;
for (int i = 0; i < lengths.Length; i++)
length *= lengths;
Type t = origArray.GetType().GetElementType();
Array newArray = Array.CreateInstance(t, lengths);
Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
return newArray;
}
//动态调整一维数组长度
public static Array Redim(Array origArray, int length)
{
//确定每个元素的类型
Type t = origArray.GetType().GetElementType();
//创建新的数组
Array newArray = Array.CreateInstance(t, length);
//原数组中的数据拷贝到新数组中
Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
return newArray;
}
//动态调整二维数组长度
public static Array Redim(Array origArray, params int[] lengths)
{
//确定每个元素的类型
Type t = origArray.GetType().GetElementType();
//创建新的数组
Array newArray = Array.CreateInstance(t, lengths);
//原数组中的数据拷贝到新数组中
for (int i = origArray.GetLowerBound(0); i <= Math.Min(origArray.GetUpperBound(0), newArray.GetUpperBound(0)); i++)
for (int j = origArray.GetLowerBound(1); j <= Math.Min(origArray.GetUpperBound(1), newArray.GetUpperBound(1)); j++)
newArray.SetValue(origArray.GetValue(i, j), i, j);
//在这里没有用Copy方法,如果用此方法,会把原数组中所有数据逐个拷贝到新数组中
return newArray;
} //如果在Redim方法中用Copy方法(动态调整二维数组长度)
public static Array Redim(Array origArray, params int[] lengths)
{
int length = 1;
for (int i = 0; i < lengths.Length; i++)
length *= lengths;
Type t = origArray.GetType().GetElementType();
Array newArray = Array.CreateInstance(t, lengths);
Array.Copy(origArray, 0, newArray, 0, Math.Min(origArray.Length, length));
return newArray;
}
解决方案 »
- 【请教】给我推荐一些学习C# windows Form编程的好的书籍或者资料好吗?
- C# WinForms 怎样实现DLL部署到指定目录
- winform后台运行的程序用timer会夺取鼠标焦点,请求帮助
- str = string.format("{\"bookname\":\"{0}\"}",strName);这样为什么不行?
- 如何判断一个文本文件是gb2312格式还是utf8格式
- RichTextBox OnPaint 无效果
- 页面绑定的问题???
- ASP.NET多语言如何实现
- 如果using一个FileStream,是否会隐含调用Close()?
- iss访问出现根目录,无法现实网页
- 关于解析<A href="http://localhost:88/hoh4/55555555">1212</A> 急啊,谢谢
- 使用DataGridView时遇到的一些问题
List<T>类的用法非常类似于System.Collection命名空间中的ArrayList类,List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。