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