我有一个布尔方法,我试图将一个十进制数传递给它,然后根据接收到的十进制的某些标准返回一个布尔值。将值传递给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);
}
}
}
答案 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));