在 C# 中调用函数时出错,因为在参数中使用了变量

Error when calling a function in C# because variable is used in parameter

我是 c# 的新手,但我正在尝试创建一个基本程序,该程序可以使用添加数字的函数(这只是练习,我知道它效率低下。

        {
            int AddNumbers(int num1, int num2) //Here's where the error comes
            {
                int result = num1 + num2;
                return result;
            }

            int num1 = 10;

            int num2 = 20;

            AddNumbers(num1, num2);

但是,当我尝试时,它说 "A local parameter named 'num1' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter"。我认为这是因为我在调用函数时声明了变量,但我不知道如何修复它。

感谢您的帮助!

编辑:明确一点,函数后面的数字是我想在函数中添加的数字

欢迎来到 SO。

如您所知,您不能在方法中使用相同的变量名 这就是你需要的

     {
        int AddNumbers(int num1, int num2) //Here's where the error comes
        {
            int result = num1 + num2;
            return result;
        }

        int num2 = 10;

        int num3 = 20;

        AddNumbers(num2, num3);

    }

你可以有这样的东西:

class Program
{
    int p = 0;
  public  static void Main(string[] args)
    {
        int num1 = 10;
        int num2 = 20;           
     int num =  Method1(num1,num2);
     Console.WriteLine(num);
    }

    public static int Method1(int num1, int num2)
    {
        p = num1 + num2;
        return p;
    }      
}

本地方法可以访问父块中的所有内容。这就是为什么不能多次定义同一个变量名的原因。试试这个。

{
    int num1;
    int num2;

    int AddNumbers(int left, int right) => left + right;

    AddNumbers(num1, num2);
}

这里还有一个指南:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/local-functions

我猜你是想制作一个加号的方法。如果你想制作一个方法,你需要在主要代码之外制作方法。

public static int AddNumbers(int num1, int num2)
{
    int sum;
    sum = num1 + num2;
    return sum;
}
static void Main(string[] args)
{
    int a = 10;
    int b = 20;
    Console.WriteLine($"a = {a}, b = {b}");
//First way to control the string: put $ infront of the string, and write code in the {})
    Console.WriteLine("a + b = {0}", AddNumbers(a, b));
//Second way to control the string: put {} and number (start with 0) and write code after comma
}

如果你这样写,你会得到这样的答案

a = 10, b = 20
a + b = 30

对于public static int AddNumbers(int num1, int num2) 您还不必考虑 public static。 在int的位置可以放另外的变量,比如string, long, double。对于这种情况,你必须在最后 return (various you put); 。 如果你放void,你就不用放return,你想要的东西会在方法里完成。