在 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
,你想要的东西会在方法里完成。
我是 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
,你想要的东西会在方法里完成。