为什么我的结构数组没有使用 Array.Resize 调整大小?
Why is my array of struct not resizing with Array.Resize?
我有一个声明为
的结构数组
public struct classMates
{
public string first;
public string last;
public string ID;
}
我正在使用 StreamReader 读取 .txt
文件,我的变量对应于它们的相关值。 IE。 first == first name, ID == phone number.
我的结构数组被定义为:
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.
}
}
在那之后,它会移动到一个方法来将它添加到文件中。但是,通过轻微的调试,我发现我的数组中没有新添加的 space 用于我尝试输入的这个值。我有 [42] 个数组占位符,在 Array.Resize 的帮助下,这实际上应该是 [43].
我的问题是,为什么我的数组没有按照我的要求调整大小?好像放错地方了,实在是不知道该放哪里。
您需要按以下方式声明您的方法:
static void addClassMates(ref classMates[] classMateInfo)
注意参数的 ref
。
我有一个声明为
的结构数组public struct classMates
{
public string first;
public string last;
public string ID;
}
我正在使用 StreamReader 读取 .txt
文件,我的变量对应于它们的相关值。 IE。 first == first name, ID == phone number.
我的结构数组被定义为:
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.
}
}
在那之后,它会移动到一个方法来将它添加到文件中。但是,通过轻微的调试,我发现我的数组中没有新添加的 space 用于我尝试输入的这个值。我有 [42] 个数组占位符,在 Array.Resize 的帮助下,这实际上应该是 [43].
我的问题是,为什么我的数组没有按照我的要求调整大小?好像放错地方了,实在是不知道该放哪里。
您需要按以下方式声明您的方法:
static void addClassMates(ref classMates[] classMateInfo)
注意参数的 ref
。