【问题标题】:Bank account with setters and getters带有 setter 和 getter 的银行帐户
【发布时间】:2019-03-24 12:58:43
【问题描述】:

所以我有一个练习,我需要做一个银行账户程序。纯粹的目标是让我了解 setter/getter,因此非常简单。

我想写我的私人 int money;只能通过我的公共 get/set int Money 访问;之后,我想使用一种方法,例如提款,我可以在其中提取一些钱。现在我遇到了问题,当我执行退出方法时,它告诉我:由于 Konto.Konto(int) 将 void 返回,因此无法返回。 (不是逐字逐句的解释,是我的翻译。

我从来没有将任何东西设置为无效,所以我看不出我的问题出在哪里。提前感谢您对我的帮助。

编辑:我的最终目标是,如果我按 1,我可以设置我提取的金额,并且我的系统会打印我剩下的值。所以我“给”我的方法一个提款号码,所述号码从我的初始值中减去,它返回我剩下的值。

namespace ConsoleApp1
{
    class Konto
    {
        private int money;
        public int Money
        {
            get
            {
                return this.money;
            }
            set
            {
                money = value;
            }

        }

        public Withdraw(int money)
        {
            return Money - money;
        }

    }
}

【问题讨论】:

  • 你想让Withdraw做什么?您是否希望它仅将 money 设置为较小的值而不是其他值?你希望它返回任何东西吗?
  • 您正在返回 int,但在 Withdraw 函数中没有设置返回类型
  • 方法必须包含:访问器(public/internal/private ecc),returning type(这是您要返回给调用您的人的数据类型方法和名称。您显然缺少返回类型;) - 编辑:访问器实际上不是强制性的,如果省略,它们将被视为 private
  • 设计说明:BankAccount.Money 是只读属性的经典案例。删除set{} 部分并强制更改通过WithDraw()
  • 如果您想成为一名程序员,请习惯阅读编译错误并非常仔细地阅读它们。编译错误说明了什么?

标签: c#


【解决方案1】:

您的 Withdrawal 方法缺少返回类型。应该是

public int Withdrawal(int money)
{
   //you weren't setting the money variable to the new amount
   Money -= money;
   return Money;
}

在 C# 中,只有类构造函数不需要返回类型。所以

class Konto
{
   public Konto()
   {...}
}

有效,但所有其他方法都需要有返回类型。此外,就像风格/清理问题一样。您不需要私有支持字段。如果您想初始化账户中的金额,并且只通过提款和存款方式进行更改,您可以这样做。

class Konto
{
   public int Money {private set; get;}
   public Konto(int initialAmount)
   {
       Money = initialAmount;
   }

   public int Withdrawal(amount)
   {
      Money -= amount;
      return Money;
   }

   public void Deposit(int amount)
   {
      Money += amount;
   }
}

在此代码中,Money 只能通过您创建的方法从类内部设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多