无法执行简单的方法调用

本文关键字:方法 调用 简单 执行 | 更新日期: 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);