简单的方法输出过程

时间:2013-10-23 06:42:11

标签: c#

我有一个基本类,包括

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#的新手,因为我相信你能说出来。在此上下文中输出方法的正确过程是什么?

3 个答案:

答案 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 pointbinary 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)); //<- 
}