Объявить класс, содержащий массив, индексатор для работы с этим массивом и приватный конструктор - C#
Формулировка задачи:
Объявить класс, содержащий одномерный целочисленный массив, индексатор для работы с этим массивом, а также приватный конструктор, принимающий один параметр в качестве аргумента. Конструктор выделяет память под массив, размерность которого определяется аргументом конструктора. Также в классе определен конструктор с двумя аргументами, который при своей работе вызывает приватный конструктор, передавая ему свой первый аргумент в качестве параметра, а затем расписывает все элементы массива значением своего второго аргумента. Создать объект этого класса. Ввести с клавиатуры элементы массива объекта Аргументы для конструктора вводятся с клавиатуры. Распечатать поля (массивы) объектов.
Вот, что получилось. StackOverFlowException
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- int x = Int32.Parse(Console.ReadLine());
- int y = Int32.Parse(Console.ReadLine());
- YaClass ya_object = new YaClass(x, y);
- for (int i = 0; i < ya_object.array.Length; i++)
- {
- Console.WriteLine(ya_object.array[i].ToString());
- }
- }
- }
- class YaClass
- {
- public int[] array;
- public int this[int index]
- {
- set
- {
- array[index] = value;
- }
- get
- {
- return array[index];
- }
- }
- private YaClass(int x) : this(x, 0)
- {
- this.array = new int[x];
- }
- public YaClass(int x, int y)
- {
- new YaClass(x);
- for (int i = 0; i < this.array.Length; i++)
- {
- array[i] = y;
- }
- }
- }
Решение задачи: «Объявить класс, содержащий массив, индексатор для работы с этим массивом и приватный конструктор»
textual
Листинг программы
- public class Program
- {
- private static void Main(string[] args)
- {
- var length = int.Parse(Console.ReadLine());
- var defaultValue = int.Parse(Console.ReadLine());
- var myArray = new MyArray(length, defaultValue);
- for (var i = 0; i < myArray.Length; i++)
- Console.WriteLine(myArray[i]);
- }
- }
- public class MyArray
- {
- private readonly int[] _array;
- public MyArray(int length, int defaultValue) : this(length)
- {
- for (var i = 0; i < _array.Length; i++)
- _array[i] = defaultValue;
- }
- private MyArray(int length)
- {
- _array = new int[length];
- }
- public int this[int index]
- {
- get { return _array[index]; }
- set { _array[index] = value; }
- }
- public int Length
- {
- get { return _array.Length; }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д