-2

このメソッドを含む基本クラスがあります

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#が初めてです。このコンテキストでメソッドを出力する適切なプロセスは何ですか?

4

3 に答える 3

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詳細については、 10 進浮動小数点2進浮動小数点に関する私の記事を読んでください。
  • メソッドは .NET 命名規則に従っていませgetDepositん。(少なくともパブリックな) メソッドは PascalCase で名前を付け、先頭に大文字を付けます。
  • あなたのgetDepositメソッドは、デポジットを「取得」していないため、奇妙な名前が付けられています-デポジットを作成しています(そして残高を返しています)
  • メソッドgetDepositは、負でない限り、渡された値を常に返します。それは私には奇妙に思えます-何かを返す場合、残高を返す必要はありませんか?
  • あなたのgetDeposit方法は、マイナスの預金を静かに無視します。マイナスの預金をしようとするとプログラミングエラーIMOが示されるため、これはエラーになると思います。
于 2013-10-23T06:44:08.247 に答える
6

メソッドgetDepositは、渡していない引数を 1 つ受け取ります。メソッドに値を渡すか、何を達成したいかによって異なります。

static void DumpContents(Account account)
{
    double deposit = 1000;
    Console.WriteLine(" output {0}", account.getDeposit(deposit));
}

または、この引数パラメータをメソッド シグネチャから削除してください。

于 2013-10-23T06:44:22.817 に答える