.NET 4.x Увеличить размер массива не удаляя элементы? - C#
Формулировка задачи:
Приветствую, вот хотел бы просить что собственно делает array.Resize? как я понял эта функция копирует старый массив(не удаляя элементов) и увеличивает его длину, но у меня почему то он как будто создает новый массив с новым размером. кидаю код и надеюсь вы мне поможете.
class Program
{
public static string[] array = new string[2]; // объявляем массив
static void Main(string[] args)
{
Switch();
Console.ReadLine();
}
public static void ShowIndex() // смотрим на все элементы массива
{
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(" [{0}] : {1}", i, array[i]);
}
Console.WriteLine("");
Console.WriteLine();
Console.WriteLine($" LENGHT: {array.Length}");
Console.WriteLine("----------------------");
Switch();
}
public static void Write() // функция где записываем элементы в массив
{
Console.WriteLine(" Write: ");
for (int i = 0; i < array.Length; i++)
{
array[i] = Console.ReadLine();
}
Array.Resize(ref array, array.Length * 2); // array.resize
Switch();
}
public static void Switch()
{
Console.WriteLine("Your choise? 1 - Add, 2 - Delete, 3 - Show All");
string result = Console.ReadLine();
switch (Convert.ToInt32(result))
{
case 1:
Write();
break;
case 2:
break;
case 3:
ShowIndex();
break;
default:
Switch();
break;
}
}Решение задачи: «.NET 4.x Увеличить размер массива не удаляя элементы?»
textual
Листинг программы
static int oldLength;
public static void Write() // функция где записываем элементы в массив
{
Console.WriteLine(" Write: ");
for (int i = oldLength; i < array.Length; i++)
{
array[i] = Console.ReadLine();
}
oldLength = array.Length;
Array.Resize(ref array, array.Length * 2); // array.resize
Switch();
}