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