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

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


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

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

14   голосов , оценка 4.214 из 5
Похожие ответы