Ошибка process is terminated due to stackoverflowexception - C#
Формулировка задачи:
Подскажыте что сделать что бы код заработал
и
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication17
{
namespace Finance
{
class Bank
{
People.Client[] clinets;
public Bank()
{
clinets = new People.Client[0];
}
public void add_account()
{
People.Client[] c;
c = new People.Client[clinets.Length+1];
Array.Resize(ref clinets, clinets.Length + 1);
clinets[clinets.Length - 1] = new People.Client();
clinets[clinets.Length - 1].info();
}
public void print_balance(){
Console.WriteLine("");
}
public People.Client open_account(Bank b, string str) {
for (int i = 0; i < clinets.Length; i++)
{
if (clinets[i].find_card(str) == true) return b.clinets[i];
}
return null;
}
public void set_ac(Bank b, string str) {
open_account(b, str).set_info();
}
}
}
namespace People
{
class Client
{
Login.Account accounts;
string name;
string surname;
string city;
public Client(){
accounts = new Login.Account();
name = null;
surname = null;
city = null;
}
public bool find_card(string str)
{
for(int i = 0; i<accounts.Length; i++)
if (accounts.Number_Card == str) return true;
return false;
}
public void print()
{
Console.WriteLine("name: " + name);
Console.WriteLine("surname: " + surname);
Console.WriteLine("city: " + city);
}
public void info() {
Console.WriteLine("Card: " + accounts.Number_Card);
Console.WriteLine("Password: " + accounts.Password);
Console.WriteLine("Balance: " + accounts.Balance);
}
public void balance()
{
Console.WriteLine("Balance: " + accounts.Balance);
}
public void set_info() {
Console.Write("name: ");
name = Console.ReadLine();
Console.Write("surname: ");
surname = Console.ReadLine();
Console.Write("city: ");
city = Console.ReadLine();
}
public void set_balance() {
accounts.Balance += Convert.ToInt32(Console.ReadLine());
}
public void credit_balance()
{
accounts.Balance -= Convert.ToInt32(Console.ReadLine());
}
}
}
namespace Login
{
class Account
{
string number_card;
string password;
int balance;
Random rand;
public Account()
{
rand = new Random();
for (int i = 0; i < 16; i++)
{
number_card += Convert.ToString(rand.Next(0, 9));
if (i == 3 || i == 7 || i == 11) number_card += " ";
}
for (int i = 0; i < 8; i++)
{
password += Convert.ToString(Convert.ToChar(rand.Next(48, 122)));
}
balance = 0;
}
public string Number_Card
{
get
{
return number_card;
}
set
{
number_card = value;
}
}
public string Password
{
get
{
return password;
}
set
{
password = value;
}
}
public int Balance
{
get
{
return balance;
}
set
{
Balance = value;
}
}
}
}
class Program
{
static void Main(string[] args)
{
Finance.Bank b1 = new Finance.Bank();
int change = 0;
int change2 = 0;
string str;
str = null;
while (change != 3)
{
Console.WriteLine("1 - Add account");
Console.WriteLine("2 - open account");
Console.WriteLine("3 - exit");
change = Convert.ToInt32(Console.ReadLine());
if (change == 1)
{
b1.add_account();
continue;
}
if (change == 2) {
Console.Write("Number card: ");
str = Console.ReadLine();
if (b1.open_account(b1, str) == null)
{
Console.WriteLine("Not card");
continue;
}
else b1.set_ac(b1, str);
}
if (change == 3) break;
while (change2 != 4) {
Console.WriteLine("1 - Print balance");
Console.WriteLine("2 - Add balance");
Console.WriteLine("3 - Credit balance");
Console.WriteLine("4 - Exit to menu");
change2 = Convert.ToInt32(Console.ReadLine());
switch (change2) {
case 1:
b1.open_account(b1, str).balance();
break;
case 2:
b1.open_account(b1, str).set_balance();
break;
case 3:
b1.open_account(b1, str).credit_balance();
break;
}
}
}
}
}
}
в методах
b1.open_account(b1, str).set_balance();
b1.open_account(b1, str).credit_balance();
Решение задачи: «Ошибка process is terminated due to stackoverflowexception»
textual
Листинг программы
public int Balance { get; set; }