为什么我的struct数组没有使用Array.Resize调整大小?

时间:2015-06-12 17:02:33

标签: c# arrays struct resize streamwriter

我有一个结构数组声明为

public struct classMates
    {
        public string first;
        public string last;
        public string ID;
    }

我使用StreamReader读取.txt文件,我的变量对应于它们的相关值。即。首先==名字,ID ==电话号码。

我的结构数组被指定为:

classMates[] classMateInfo = new classMates[43];

我有一个方法应该在我的.txt文件中添加一个新成员,并将其附加到我声明的数组的末尾。但是,为了做到这一点,我需要调整我的数组+ 1以便为新成员调整大小。否则,它只会覆盖现有成员。

在我调用我的方法添加新成员之后,我有Array.Resize。但是,一旦我完成了该方法,StreamWriting就会产生并将其保存到准备写入文件的变量中。

static void addClassMates(classMates[] classMateInfo)
    {
        //I DECLARE MY ARRAY RESIZE HERE
        Array.Resize(ref classMateInfo, classMateInfo.Length + 1);
        //I am essentially creating a new space in my array for a new member, below.
        Console.Write("Enter first name: ");
        classMateInfo[classMateInfo.Length - 1].first = Console.ReadLine();
        Console.Write("Enter last name: ");
        classMateInfo[classMateInfo.Length - 1].last = Console.ReadLine();
        Console.Write("Enter phone number: ");
        classMateInfo[classMateInfo.Length - 1].ID = Console.ReadLine();

        Console.WriteLine("Would you like to save the changes back to the file? [Y/N]");
        string temp = Console.ReadLine();
        if ((temp == "Y") || (temp == "y"))
        {                
            editNumber(classMateInfo);//A method where it saves it to variables ready to be StreamWritten.
        }
    }

然后,它会移动到一个方法,将其添加到文件中。但是,通过轻微的调试,我发现我的阵列中没有新增的空间用于此值我尝试进入。我有[42]数组占位符,并且在Array.Resize的帮助下,这应该是实际的,[43]。

我的问题是,为什么我的数组没有按照我的要求调整大小?看来我放错了地方,而且我真的不知道应该把它放在哪里。

1 个答案:

答案 0 :(得分:2)

您需要按以下方式声明您的方法:

static void addClassMates(ref classMates[] classMateInfo)

注意参数的ref