如何让以下程序打印sumOfNumbers方法的结果?我无法在main方法中调用此方法,我不知道为什么。有人可以解释我做错了吗?
class Program
{
static void Main(string[] args)
{
//Console.WriteLine();
//Console.ReadLine();
}
private int sumOfNumbers (int x, int y)
{
return x + y;
}
}
答案 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);