Je suis nouveau à C# et travaille actuellement sur des méthodes et des constructeurs pour créer un simple programme de retrait bancaire et de dépôt pour calculer le solde après. Je suis soit confus par ces instructions données à moi ou je fais quelque chose de mal. Je n'arrive juste pas à comprendre. J'essaye de placer le solde initial par défaut à $ 1000 tout en réglant le champ d'équilibre en tant que champ en lecture seule.Banque Retirer et Programme de dépôt C#
Le problème principal que je rencontre est que j'essaie de configurer un constructeur pour le champ "Balance" en lecture seule. C# dit que je ne peux pas appeler une méthode en lecture seule. J'ai posté mon code ci-dessous si quelqu'un pouvait m'aider. Merci d'avance.
Account.cs
class Account
{
public const double defaultBalance = 1000;
private double _amount;
public double balance;
public double Balance
{
get { return defaultBalance; }
}
public double Amount
{
get
{
return _amount;
}
set
{
if (value < 0)
{
throw new ArgumentException("Please enter an amount greater than 0");
}
else
{
_amount = value;
}
}
}
public double doDeposit()
{
balance += _amount;
return balance;
}
public double doWithdrawl()
{
balance -= _amount;
if (balance < 0)
{
throw new ArgumentException("Withdrawing " + _amount.ToString("C") + " would leave you overdrawn!");
}
return balance;
}
}
main.cs
namespace Account_Teller
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Account acc = new Account();
private void btnWithdraw_Click(object sender, EventArgs e)
{
try
{
acc.Amount = double.Parse(txtAmount.Text);
//Error in the line below. "Property cannot be assigned to -- it is read only
//Trying to set the initial balance as $1000 using constructor from 'Account' class
acc.Balance = double.Parse(lblBalance.Text);
lblBalance.Text = acc.doWithdrawl().ToString("C");
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message);
}
catch (ArgumentException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
private void btnDeposit_Click(object sender, EventArgs e)
{
try
{
acc.Amount = double.Parse(txtAmount.Text);
lblBalance.Text = acc.doDeposit().ToString("C");
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message);
}
catch (ArgumentException ex)
{
MessageBox.Show(ex.Message);
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
}
Vous ne disposez pas d'un setter sur votre propriété 'Balance'. – Steve
@Steve Les instructions me demandent de définir la balance sur une propriété en lecture seule. Ce ne serait pas un problème si on me permettait d'ajouter un setter. – hyang24
TLDR; Je pense que vous avez besoin de quelque chose comme 'defaultBalance decimal privé;' – Timeless