如何在C Sharp中重命名实例化的数组对象
本文关键字:实例化 数组 对象 重命名 Sharp | 更新日期: 2023-09-27 18:17:20
我的目标是重命名一个实例化的数组。
下面是一个测试用例。我的实际程序从excel电子表格中读取数据,执行过滤和类型转换,然后将该数据存储在数组中(例如下面的allData
数组)。
一旦数据存储在数组中,我需要将数组本身拆分为两个副本,并在每个副本上执行一组单独的任务。
为了实现这一点,我创建了一个克隆(在示例arr1
中)。现在我有两个相同数据的副本(allData
和arr1
),但术语allData
,即在过去的代码中适当命名的,现在感觉命名不恰当,所以我想重命名它。
我考虑过创建另一个克隆,但这只会让数组(allData
)闲置在那里,不必要地占用内存。
我也考虑了arr2 = allData
,但这只是留下一个引用(allData)坐在那里不必要的。我真正想要的是将allData重命名为arr2。
namespace nspace
{
public class c
{
public static void Main()
{
object[][] allData = new object[10][];
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 5; j++)
{
// fill array with something
}
}
arr1 = allData.clone();
// Rename array allData to arr2
}
}
}
您可以在单独的方法中检索excel数据,然后将值写入通过引用传递的两个数组中。通过将all_data的作用域仅设置为此方法,一旦退出该方法,该数组将在下一个垃圾收集器调用时被删除。您可以在这里找到更多信息:如何删除数组。下面的内容:
static void Main(string[] args)
{
object[][] arr1 = new object[10][];
object[][] arr2 = new object[10][];
GetData(ref arr1, ref arr2);
}
private static void GetData(ref object[][] arr1, ref object[][] arr2)
{
object[][] allData = new object[10][];
object[] data;
for (int i = 0; i < 10; i++) //this is just for sample purposes
{
data = new object[10];
for (int j = 0; j < 10; j++) { data[j] = i * j; }
allData[i] = data;
}
arr1 = allData;
arr2 = allData;
}