并非所有代码路径都返回值(C#)

时间:2016-09-03 16:10:19

标签: c# compiler-errors

我正在学习C#,我在使用这个程序时遇到了麻烦。我正在学习方法和类,我正在制作一个测试程序,它将两个数字组合在一起并在控制台中显示它们。我收到以下三个错误:

prog.cs(5,13): error CS0161: `Test.addNumbers(int, int)': not all code paths return a value
prog.cs(16,3): error CS0118: `Test.addNumbers(int, int)' is a `method' but a `type' was expected
prog.cs(17,7): error CS0841: A local variable `numbers' cannot be used before it is declared
Compilation failed: 3 error(s), 0 warnings

这是我的代码:

using System;

public class Test
{
    public int addNumbers(int num1, int num2) {
    int result;
    result = num1 + num2;
    }

    public static void Main()
    {
        int a = 2;
        int b = 2;
        int r;

        addNumbers numbers = new addNumbers();
        r = numbers.addNumbers(a, b);

        Console.WriteLine(r);
    }
}

我已经尝试过我所知道的一切,但正如我所说,我还在学习,所以我对C#了解不多。任何人都可以向我解释错误是什么意思,它们为什么会发生以及如何修复它们?谢谢。

2 个答案:

答案 0 :(得分:3)

修改您的addNumbers以返回值。函数签名声明它返回int,因此您必须从函数返回int

using System;

public class Test
{
    public static int addNumbers(int num1, int num2) 
   {
    int result;
    result = num1 + num2;
    return result;
    }

    public static void Main()
    {
        int a = 2;
        int b = 2;
        int r;


        r = addNumbers(a, b);

        Console.WriteLine(r);
    }
}

修改

仅当您的功能不是静态时才需要addNumbers numbers = new addNumbers();

可以使用ClassName.FunctonName调用静态函数,而需要以您描述的方式调用非/静态(实例函数)。

addNumbers numbers = new addNumbers();
numbers.SomeFunction();

您可以按照以下方式查看。

Classname.SomeStaticVariable = 2;

如上所述,SomeStaticVariable在任何时候对整个应用程序都是相同的。虽然下面描述的方法仅在内存中存在obj时才可用。

Classname obj = new ClassName();
obj.SomeVariable = 2;

答案 1 :(得分:0)

使方法AddNumbers(int a,int b)为静态,以便您可以在main方法中使用它。 编辑AddNumbers(int a,int b): 1

之后只需使用这种方法: r = AddNumbers(a,b);