无法执行简单的方法调用

时间:2013-07-25 15:30:15

标签: c#

如何让以下程序打印sumOfNumbers方法的结果?我无法在main方法中调用此方法,我不知道为什么。有人可以解释我做错了吗?

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


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

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

6 个答案:

答案 0 :(得分:6)

您的方法签名错误。它应该是private static int sumOfNumbers(int x, int y)

编辑:我被要求对此进行更多解释。静态方法(如示例中的Main)不属于对象的特定实例。它属于同类Program。没有static修饰符的方法属于该类的特定实例。这种差异意味着“无对象”静态方法(Main)只能直接使用静态方法,或者通过实例化对象然后在对象上调用该方法。

第二种方法如下:

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

我会继续建议将方法修改为静态。我从您的Main方法推断出您正在编写一个控制台应用程序,并且(根据我的经验)实例这样的类是非常规的。

答案 1 :(得分:2)

您需要实例化Program并致电sumOfNumbers,否则您可以sumOfNumbers静态。

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

或者,如果您将static关键字放在sumOfNumbers实施的前面,那么您可以使用Program.sumOfNumbers(1, 2);

来调用它

答案 2 :(得分:1)

了解“静态”关键字对您有所帮助。参考 What's a "static method" in C#?

这里的概念是,一种方法是“静态”方法,另一种方法是“实例”方法。

如果没有实例化类,则无法从静态方法调用实例方法。但反之亦然。

因此,如果您将方法签名转换为

private static int sumOfNumbers (int x, int y)

你可以从main(),一个静态方法

调用这个方法

答案 3 :(得分:0)

总结:

class Program
{
    static void Main(string[] args)
    {
        Console.Writeline(sumOfNumbers(5,5));
    }

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

答案 4 :(得分:0)

在main

中编写以下代码
Program p=new Program();
Console.Write(p.sumOfNumbers(<any number>,<any number>);
Console.ReadKey();

答案 5 :(得分:-2)

Console.Writeline(sumOfNumbers(5,5)的ToString);