Simple Method Output Process

I have a basic class with this method including

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;
}

Now in my actual program I am trying to output this method. What would my writeline look like?

I tried to write this:

 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());
    }

I am getting an error saying:

no overload for method 'getDeposit' takes 0 arguments.

What am I doing wrong, am I trying to output this method incorrect?

Any help, insight or suggestions would be extremely helpful.

I am new to c# as I'm sure you can tell. What is the proper process to output a method in this context?

Jon Skeet
people
quotationmark

I am getting an error saying "no overload for method 'getDeposit' takes 0 arguments". What am I doing wrong

Exactly what it says. Here's your method call:

Console.WriteLine(" output {0}", account.getDeposit());

... and here's the method declaration:

public virtual double getDeposit (double amount)

Note how the method declares a parameter - but you're not providing an argument. Either you need to get rid of the parameter, or you need to add an argument to the method call. Or you need to change to using a different method - one which doesn't change the balance of the account. (It seems unlikely that you want to do that in this case.) Perhaps you should add a Balance property:

// Please note that this should probably be decimal - see below
public double Balance { get { return balance; } }

Then call it with:

Console.WriteLine(" output {0}", account.Balance);

Additionally:

  • For financial quantities, it's generally better to use decimal than double. Read my articles on decimal floating point and binary floating point for more information.
  • Your getDeposit method doesn't follow .NET naming conventions, where (at least public) methods are named in PascalCase, with a leading capital letter
  • Your getDeposit method is oddly named as it isn't "getting" a deposit - it's making a deposit (and returning the balance)
  • Your getDeposit method always returns the value passed into it, unless it's negative. That seems odd to me - if it's going to return anything, shouldn't it return the balance?
  • Your getDeposit method silently ignores negative deposits. I'd expect this to throw an error, as trying to make a negative deposit indicates a programming error IMO.

people

See more on this question at Stackoverflow