Обобщенный класс. Расширить одномерный массив при обращении к несуществующему элементу - C#
Формулировка задачи:
Подскажите как выполнить такую задачу? "Создать обобщенный класс для представления одномерного массива, который автоматически расширяется, когда пользователь обращается к несуществующему элементу. Например, если создан пустой массив a, первое обращение (для чтения или записи) к элементу a [n] обеспечит расширение массива так, чтобы он содержал n + 1 элемент с индексами от 0 до n-го включительно. Если определенные элементы уже существовали, они сохраняются и массив дополняется новыми элементами. Если элемент с индексом уже существует, осуществляется обычное обращение."
Или хотя бы подскажите можно ли как-то получить значение [index], чтобы использовать его в другом методе
......
......
public class ArrayContainer<T> { private T[] arr;//закрите поле - "звичайний" масив (список); public ArrayContainer(params T[] arr)//властивості (для читання) { this.arr = new T[arr.Length]; Array.Copy(arr, this.arr, arr.Length); } public ArrayContainer() { this.arr = new T[arr.Length]; } public T this[int index]//індексатор; { set { arr[index] = value; } //как получить значение этого index, чтобы воспользоваться им в методе public ArrayContainer(params T[] arr) ? get { return arr[index]; } }
Решение задачи: «Обобщенный класс. Расширить одномерный массив при обращении к несуществующему элементу»
textual
Листинг программы
using System; using System.Linq; namespace ConsoleApplication196 { internal class Program { private static void Main(string[] args) { var arr = new ExpandingArray<string>(); arr[1] = "bloom"; arr[3] = "flame"; // for (int i = 0; i < arr.Length; i++) Console.WriteLine("{0}: {1}", i, arr[i]); Console.ReadLine(); } } public class ExpandingArray<T> { private T[] items = new T[0]; public int Length { get { return items.Length; } } public T this[int index] { get { if (index >= items.Length) Expand(index + 1); return items[index]; } set { if (index >= items.Length) Expand(index + 1); items[index] = value; } } void Expand(int newLength) { Array.Resize(ref items, newLength); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д