Обобщенный класс. Расширить одномерный массив при обращении к несуществующему элементу - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д