Помогите найти причину StackOverflowException - C#

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

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

Помогите пожалуйста, написал программу, но она матерится необработанным исключением, задание такое: Доработать задание лабораторной работы №1 использовав следующие изменения: 1. Добавить класс потомок; 2. Добавить метод реализуемый в потомке 3. Использовать в классе потомке доступ к полям базового класса 4. Добавить класс клиент в котором использовать клиентский статический и динамический ме-тод. 5. Выполнить описание добавляемых методов. Вродебы как все сделано, но пахать она не хочет(
using System;
using System.Linq;
 
namespace Задание
{
    class Vector
    {
        protected int[] items;
        protected  int Bound;
        protected static bool test;
 
        public Vector(int Bound, int length)
        {
            items = new int[length];
            this.Bound = Bound;
        }
        public int Length
        {
            set { Length = value; }
            get { return items.Length; }
        }
 
        public int this[int index]
        {
            get
            {
                return items[index];
            }
            set
            {
                items[index] = value;
            }
        }
 
        public void SumVector(int length, Vector First, Vector Second)
        {
            if (First.Bound != Second.Bound || First.Length != Second.Length)
                throw new InvalidOperationException();
            Console.Write("Сложение: ");
            for (int Count = 0; Count < Length; Count++)
            {
                First[Count] += Second[Count];
            }
        }
 
        public void SubsVector(int length, Vector First, Vector Second)
        {
            if (First.Bound != Second.Bound || First.Length != Second.Length)
                throw new InvalidOperationException();
            Console.Write("Вычитание: ");
            for (int Count = 0; Count < Length; Count++)
            {
                First[Count] -= Second[Count];
            }
        }
 
        public void MultVector(int k, Vector First)
        {
            Console.Write("Умножение на скаляр: ");
            for (int i = 0; i < First.Length; i++)
                First.items[i] = k * First.items[i];
        }
 
        public void DivVector(int k, Vector First)
        {
            Console.Write("Деление: ");
            for (int i = 0; i < First.Length; i++)
                First.items[i] = First.items[i] / k;
        }
 
        public void ToConsoleAll()
        {
            Console.WriteLine(string.Join(" ", items));
        }
 
        public void ToConsoleIndex(int Search)
        {
            try
            {
                int index = Search;
                Console.WriteLine("Искомый элемент: {0}", this[index]);
            }
            catch
            {
                Console.Write("Элемента по этому индексу не существует.");
            }
        }
 
        public bool Test()
        {
            if (Bound % 2 == 0)
            {
                test = true;
            }
            else
            {
                test = false;
            }
            return test;
        }
    }
 
    class client //4. класс клиент в котором использованы клиентский статический и динамический ме-тод.
    {
        string Name;
        static int kurs;
        public void Har(string Name, int Kurs)
        {
            this.Name = Name;
            kurs = Kurs;
            Console.WriteLine("\nИмя Вектора - {0}", Name);
            Say_Kurs();
        }
        public static void Say_Kurs()
        {
            Console.WriteLine("Курс - {0}", kurs);
        }
    }

    class PVector : Vector //1.класс потомок;
    {
        public PVector(string Name, int Kurs, int length, int Bound)
            : base(length, Bound)
        {
            client Third = new client();
            Third.Har(Name, Kurs);
        }
        public void Metod()
        {
            if (Test())
            {
                Console.WriteLine("Четная");
            }
            else
            {
                Console.WriteLine("Нечетная");
            }
        }
        public void MultLength(int b)
        {
            Length += b;//3. Использование в классе потомке доступа к полям базового класса
            Bound += b;
            Console.WriteLine("  ");
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            int length;
            int Search;
            string Name;
            int Kurs;
            Console.Write("Введите длину векторов First и Second: ");
            length = Convert.ToInt32(Console.ReadLine());
            Vector First = new Vector(1, length);
            Vector Second = new Vector(1, length);
            Random R = new Random();
            Console.Write("Вектор First: ");
            for (int Count = 0; Count < length; Count++)
            {
                First[Count] = R.Next(1, 10);
                Console.Write("{0} ", First[Count]);
            }
            Console.ReadLine();
            Console.Write("Вектор Second: ");
            for (int Count = 0; Count < length; Count++)
            {
                Second[Count] = R.Next(-10, -1);
                Console.Write("{0} ", Second[Count]);
            }
            Console.ReadLine();
            First.SumVector(length, First, Second);
            First.ToConsoleAll();
            First.SubsVector(length, First, Second);
            First.ToConsoleAll();
            First.MultVector(3, First);
            First.ToConsoleAll();
            First.DivVector(2, First);
            First.ToConsoleAll();
 
            int Bound = length;
            Console.Write("Введите имя нового вектора: ");
            Name = Convert.ToString(Console.ReadLine());
            Console.Write("Введите курс нового вектора: ");
            Kurs = Convert.ToInt32(Console.ReadLine());
            Console.Write("Введите длину вектора Third: ");
            length = Convert.ToInt32(Console.ReadLine());

            PVector Third = new PVector(Name, Kurs, length, Bound);
 
            Third.MultLength(2);
            Third.Metod();
 
            Console.Write("Введите индекс элемента: ");
            Search = Convert.ToInt32(Console.ReadLine());
            First.ToConsoleIndex(Search);
            Console.ReadKey();
        }
    }
}

Решение задачи: «Помогите найти причину StackOverflowException»

textual
Листинг программы
set { Length = value; }

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


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

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

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