将数据传递给另一个类中的布尔方法并处理响应

时间:2019-04-16 14:09:07

标签: c#

我有一个布尔方法,我试图将一个十进制数传递给它,然后根据接收到的十进制的某些标准返回一个布尔值。将值传递给Account.Deposit时出现错误:

  

非静态字段,方法或属性'Account.Deposit(decimal)'需要对象引用

这是处理用户输入,然后将值传递到我的check / action方法的方法:

namespace BankApp
{
    public class DepositLogic
    {
        public void DoDeposit()
        {
            Console.Write("Please enter the amount you would like to deposit:");
            decimal DepositAmount;
            DepositAmount = Convert.ToDecimal(Console.ReadLine());
            bool response;
            response = Convert.ToBoolean(Account.Deposit(DepositAmount));
        }
    }
}

这是布尔方法,旨在将true / false值返回到上述方法,并根据DoDeposit方法的输入来更改余额变量

namespace BankApp
{
    public class Account
    {
        private Decimal _balance;

        public bool Deposit(decimal amountToAdd)
        {
            if(amountToAdd > 0)
            {
                _balance = _balance + amountToAdd;
                return true;
            }
            return false;
        }
    }
}

我的目标是让用户输入要“存款”的金额,该金额将被传递到我的Account.Deposit方法中,余额变量将被更新。然后返回一个布尔值,以提醒用户操作是否成功。

编辑:

如果我在另一个类中实例化我的帐户,是否仍然可以访问它?此时是我的帐户实例化的地方。

namespace BankApp
{
    public class Program
    {
        public static void Main()
        {
            Account account = new Account("Suriya's Account", 100000);
        }
    }
}

2 个答案:

答案 0 :(得分:5)

您当前正在尝试以静态方式(Deposit())访问Account.Deposit()方法,以使其正常工作,您必须将Deposit()方法标记为static。但是,由于您是从Deposit()方法(_balance)中访问字段,因此您很可能不希望使用静态方法。
在这种情况下,您必须首先实例化Account类,然后对实例化的对象调用Deposit()方法,如下所示:

public void DoDeposit()
{
    Console.Write("Please enter the amount you would like to deposit:");
    decimal DepositAmount;
    DepositAmount = Convert.ToDecimal(Console.ReadLine());
    bool response;

    var account = new Account();   // Instantiate object
    response = Convert.ToBoolean(account.Deposit(DepositAmount));  // Use instantiated object
}

如果您想进一步阅读C#中的static主题,请查看this

答案 1 :(得分:2)

Account是一门课。您需要创建一个实例来调用Deposit方法:

Account account = new Account();
response = Convert.ToBoolean(account.Deposit(DepositAmount));