我有一个基本类,包括
public class Account
{
//MEMBERS
private int acctNo;
protected double balance;
public double deposit;
// CONSTRUCTORS
public Account() //member intitilization
{
acctNo = 54534190;
balance = 7500;
deposit= 1500;
}
//PROPERTIES
public int AcctNo
{
get {return acctNo; }
set {acctNo = value; }
}
public double Balance
{
get { return balance; }
set { balance = value; }
}
public double Deposit
{
get {return deposit; }
set {deposit = value; }
}
public virtual double getDeposit (double amount)
{
double transactionAmt=0.00;
if (amount>0)
{
balance+=amount;
transactionAmt= amount;
}
return transactionAmt;
}
现在在我的实际程序中,我正在尝试输出此方法。我的写作线会是什么样的?
我试着写这个:
static void Main(string[] args)
{
Console.WriteLine("CREATING ACCOUNT");
Account myAcctDefault = new Account();
DumpContents(myAcctDefault);
Pause();
}
static void DumpContents(Account account)
{
Console.WriteLine(" output {0}", account.getDeposit());
}
我收到错误说:
方法'getDeposit'没有重载需要0个参数。
我做错了什么,我是否尝试输出此方法不正确?
任何帮助,见解或建议都会非常有帮助。
我是c#的新手,因为我相信你能说出来。在此上下文中输出方法的正确过程是什么?
答案 0 :(得分:10)
我收到一条错误,说“方法没有重载'getDeposit'需要0个参数”。我做错了什么
究竟是什么意思。这是您的方法调用:
Console.WriteLine(" output {0}", account.getDeposit());
...这里是方法声明:
public virtual double getDeposit (double amount)
请注意该方法如何声明参数 - 但您没有提供参数。您需要删除参数,或者需要在方法调用中添加参数。或者您需要更改为使用其他方法 - 不会更改帐户余额的方法。 (在这种情况下,您似乎不太可能这样做。)也许您应该添加Balance
属性:
// Please note that this should probably be decimal - see below
public double Balance { get { return balance; } }
然后用:
调用它Console.WriteLine(" output {0}", account.Balance);
此外:
decimal
而不是double
。请阅读decimal floating point和binary floating point上的文章以获取更多信息。getDeposit
方法不遵循.NET命名约定,其中(至少公共)方法在PascalCase中命名,带有大写字母getDeposit
方法奇怪地命名,因为它没有“获得”存款 - 它制作存款(并返还余额)getDeposit
方法始终返回传入其中的值,除非它是否定的。这对我来说似乎很奇怪 - 如果它会返回任何东西,它不应该恢复平衡吗?getDeposit
方法会默默地忽略负面存款。我希望这会引发错误,因为尝试进行负存款表示编程错误IMO。答案 1 :(得分:6)
你的getDeposit
方法接受一个你没有传递给它的参数。取决于你想要实现的目标,或者将值传递给方法:
static void DumpContents(Account account)
{
double deposit = 1000;
Console.WriteLine(" output {0}", account.getDeposit(deposit));
}
或从方法签名中删除此参数参数。
答案 2 :(得分:1)
//You have to pass a double value into the method, because there is only one method
//and wants a double paramater:
//this is what you created:
public double getDeposit(double amount) // <-
{
double transactionAmt = 0.00;
if (amount > 0)
{
balance += amount;
transactionAmt = amount;
}
return transactionAmt;
}
//This how you should call it:
static void DumpContents(Account account)
{
Console.WriteLine(" output {0}", account.getDeposit(34.90)); //<-
}