2

How do I get the following program to print the result of sumOfNumbers method? I was unable to call this method in the main method and I'm not sure why. Can someone explain what I have done wrong?

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) 只能直接与静态方法一起使用,或者通过实例化对象然后在对象上调用该方法。

第二种方法如下所示:

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 回答
1

了解“静态”关键字将对您有所帮助。请参阅 C# 中的“静态方法”是什么?

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

如果不实例化类,就不能从静态方法调用实例方法。然而,反之亦然。

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

private static int sumOfNumbers (int x, int y)

您可以从静态方法 main() 调用此方法

于 2013-07-25T15:40:51.453 回答
0

加起来:

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

    private static int sumOfNumbers (int x, int y)
    {
        return x + y;
    }
}
于 2013-07-25T15:35:33.493 回答
0

在 main 中编写以下代码

Program p=new Program();
Console.Write(p.sumOfNumbers(<any number>,<any number>);
Console.ReadKey();
于 2013-07-25T15:37:30.213 回答
-2

Console.Writeline(sumOfNumbers(5,5).Tostring);

于 2013-07-25T15:33:31.827 回答