2

次のプログラムで sumOfNumbers メソッドの結果を出力するにはどうすればよいですか? メイン メソッドでこのメソッドを呼び出すことができませんでした。その理由がわかりません。誰かが私が間違ったことを説明できますか?

class Program
{
    static void Main(string[] args)
    {


        //Console.WriteLine();
        //Console.ReadLine();
    }

    private int sumOfNumbers (int x, int y)
    {
        return x + y;
    }
}
4

6 に答える 6

6

メソッドのシグネチャが間違っています。である必要がありますprivate static int sumOfNumbers(int x, int y)

編集:これについてもう少し説明を加えるように求められました。あなたの例のように、静的メソッドMainはオブジェクトの特定のインスタンスに属していません。そのクラス に属しProgramます。static 修飾子のないメソッドは、クラスの特定のインスタンスに属します。この違いは、「オブジェクトのない」静的メソッド ( Main) は、静的なメソッドを直接操作するか、オブジェクトをインスタンス化してからオブジェクトでそのメソッドを呼び出すことによってのみ機能することを意味します。

この 2 番目の方法は次のようになります。

var foo = new Program();
Console.WriteLine(foo.sumOfNumbers(3,2))

メソッドを静的に変更することを引き続きお勧めします。私はあなたのメソッドから、あなたがコンソールアプリを書いていると推測してMainいます.(私の経験では)そのようなクラスをインスタンス化するのは型にはまらないでしょう.

于 2013-07-25T15:31:28.677 に答える
2

をインスタンス化してProgram呼び出す必要があるか、静的sumOfNumbersにすることができます。sumOfNumbers

var program = new Program();
var sum = program.sumOfNumbers(1, 2);
Console.WriteLine(sum);

または、staticキーワードをsumOfNumbers実装の前に置くと、次のように呼び出すことができますProgram.sumOfNumbers(1, 2);

于 2013-07-25T15:32:21.390 に答える