Объявить класс, содержащий массив, индексатор для работы с этим массивом и приватный конструктор - C#

Узнай цену своей работы

Формулировка задачи:

Объявить класс, содержащий одномерный целочисленный массив, индексатор для работы с этим массивом, а также приватный конструктор, принимающий один параметр в качестве аргумента. Конструктор выделяет память под массив, размерность которого определяется аргументом конструктора. Также в классе определен конструктор с двумя аргументами, который при своей работе вызывает приватный конструктор, передавая ему свой первый аргумент в качестве параметра, а затем расписывает все элементы массива значением своего второго аргумента. Создать объект этого класса. Ввести с клавиатуры элементы массива объекта Аргументы для конструктора вводятся с клавиатуры. Распечатать поля (массивы) объектов. Вот, что получилось. StackOverFlowException
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. int x = Int32.Parse(Console.ReadLine());
  6. int y = Int32.Parse(Console.ReadLine());
  7. YaClass ya_object = new YaClass(x, y);
  8. for (int i = 0; i < ya_object.array.Length; i++)
  9. {
  10. Console.WriteLine(ya_object.array[i].ToString());
  11. }
  12. }
  13. }
  14. class YaClass
  15. {
  16. public int[] array;
  17. public int this[int index]
  18. {
  19. set
  20. {
  21. array[index] = value;
  22. }
  23. get
  24. {
  25. return array[index];
  26. }
  27. }
  28. private YaClass(int x) : this(x, 0)
  29. {
  30. this.array = new int[x];
  31. }
  32. public YaClass(int x, int y)
  33. {
  34. new YaClass(x);
  35. for (int i = 0; i < this.array.Length; i++)
  36. {
  37. array[i] = y;
  38. }
  39. }
  40. }

Решение задачи: «Объявить класс, содержащий массив, индексатор для работы с этим массивом и приватный конструктор»

textual
Листинг программы
  1.  public class Program
  2.     {
  3.         private static void Main(string[] args)
  4.         {
  5.             var length = int.Parse(Console.ReadLine());
  6.             var defaultValue = int.Parse(Console.ReadLine());
  7.  
  8.             var myArray = new MyArray(length, defaultValue);
  9.             for (var i = 0; i < myArray.Length; i++)
  10.                 Console.WriteLine(myArray[i]);
  11.         }
  12.     }
  13.  
  14.     public class MyArray
  15.     {
  16.         private readonly int[] _array;
  17.  
  18.         public MyArray(int length, int defaultValue) : this(length)
  19.         {
  20.             for (var i = 0; i < _array.Length; i++)
  21.                 _array[i] = defaultValue;
  22.         }
  23.  
  24.         private MyArray(int length)
  25.         {
  26.             _array = new int[length];
  27.         }
  28.  
  29.         public int this[int index]
  30.         {
  31.             get { return _array[index]; }
  32.             set { _array[index] = value; }
  33.         }
  34.  
  35.         public int Length
  36.         {
  37.             get { return _array.Length; }
  38.         }
  39.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы