如何在C Sharp中重命名实例化的数组对象

本文关键字:实例化 数组 对象 重命名 Sharp | 更新日期: 2023-09-27 18:17:20

我的目标是重命名一个实例化的数组

下面是一个测试用例。我的实际程序从excel电子表格中读取数据,执行过滤和类型转换,然后将该数据存储在数组中(例如下面的allData数组)。

一旦数据存储在数组中,我需要将数组本身拆分为两个副本,并在每个副本上执行一组单独的任务。

为了实现这一点,我创建了一个克隆(在示例arr1中)。现在我有两个相同数据的副本(allDataarr1),但术语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
        }
    }
}

如何在C Sharp中重命名实例化的数组对象

您可以在单独的方法中检索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;
    }