我必须对x和z变量进行哪些更改才能保留在Assign方法中分配的值?我最近才开始在学习C ++ 2年后开始学习C#,所以这对我来说非常困惑。
class Program
{
static void Assign(int x, int z)
{
x = 3;
z = 2;
}
static void Sum(int x, int z)
{
Console.WriteLine(x + z);
}
static void Main(string[] args)
{
int x = 0, z = 0;
Assign(x,z);
Sum(x,z);
}
}
答案 0 :(得分:2)
您似乎误解了变量范围的工作原理。 x
中的Assign
与x
中的Main
相同。这是因为在C#中,int
按值传递(这与C ++,BTW相同)。
您可能打算将Assign
中的变量标记为ref
:
class Program
{
static void Assign(ref int x, ref int z)
{
x = 3;
z = 2;
}
static void Sum(int x, int z)
{
Console.WriteLine(x + z);
}
static void Main(string[] args)
{
int x = 0, z = 0;
Assign(x, z);
Sum(x, z);
}
}
请注意,建议不要这样做,因为现在Assign
会产生副作用。这样更好:
class Program
{
static void PrintSum(int x, int z)
{
Console.WriteLine(x + z);
}
static void Main(string[] args)
{
PrintSum(3, 2);
}
}
有关更多背景信息,我建议您查看the difference between pass-by-reference and pass-by-value。