无法执行简单的方法调用
本文关键字:方法 调用 简单 执行 | 更新日期: 2023-09-27 18:25:06
如何让以下程序打印sumOfNumbers方法的结果?我无法在主方法中调用此方法,我不确定原因。有人能解释一下我做错了什么吗?
class Program
{
static void Main(string[] args)
{
//Console.WriteLine();
//Console.ReadLine();
}
private int sumOfNumbers (int x, int y)
{
return x + y;
}
}
您的方法具有错误的签名。它应该是private static int sumOfNumbers(int x, int y)
。
编辑:我被要求对此做更多的解释。静态方法,如示例中的Main
,不属于对象的特定实例。它属于它的类Program
。不带静态修饰符的方法属于该类的特定实例。这种差异意味着"无对象"静态方法(Main
)只能直接与静态方法一起工作,或者通过实例化对象然后在对象上调用该方法来工作。
第二种方法看起来像:
var foo = new Program();
Console.WriteLine(foo.sumOfNumbers(3,2))
我将继续建议将该方法修改为静态方法。我从你的Main
方法推断,你正在编写一个控制台应用程序,(根据我的经验)实例化这样一个类是非常规的。
您要么需要实例化Program
并调用sumOfNumbers
,要么可以使sumOfNumbers
为静态。
var program = new Program();
var sum = program.sumOfNumbers(1, 2);
Console.WriteLine(sum);
或者,如果您将static
关键字放在sumOfNumbers
实现前面,那么您可以用Program.sumOfNumbers(1, 2);
来调用它
了解"static"关键字会对您有所帮助。参考什么';s a";静态方法";在C#中?
这里的概念是,一种方法是"静态"方法,另一种方法则是"实例"方法。
在不实例化类的情况下,不能从静态方法调用实例方法。然而,反之亦然。
因此,如果您将方法签名转换为
private static int sumOfNumbers (int x, int y)
您可以从main()调用此方法,这是一个静态方法
总结:
class Program
{
static void Main(string[] args)
{
Console.Writeline(sumOfNumbers(5,5));
}
private static int sumOfNumbers (int x, int y)
{
return x + y;
}
}
在主中编写以下代码
Program p=new Program();
Console.Write(p.sumOfNumbers(<any number>,<any number>);
Console.ReadKey();
Console.Writeline(sumOfNumbers(5,5).Tostring);