值类型参数
值类型(例如 int
、float
、struct
)在方法调用时会将实际的值进行拷贝,并传递给方法参数。因此,方法中对参数的任何修改不会影响调用方法时传入的原始变量。
以下为代码示例:
static void Main(string[] args)
{
int n = 9;
Modifyvalue(n);
Console.WriteLine($"n after Modifyvalue :{n}");
Point p2 = new Point{x=6,y=8};
Changepoint(p2);
Console.WriteLine($"Point after ModifyStruct: x = {p2.x}, y = {p2.y}");
}
static void Modifyvalue(int n)
{
n = 666;
}
static void Changepoint(Point p1)
{
p1.x = 10;
p1.y = 20;
}
打印结果为:
引用类型参数
引用类型(例如 class
、array、string、object、委托、接口
)在方法调用时会传递对象的引用,即指向对象的指针。因此,方法中对参数的任何修改会影响调用方法时传入的原始对象。
以下为代码示例:
class Student
{
public string Name;
}
internal class Program
{
static void Main(string[] args)
{
Student stu2 = new Student();
stu2.Name = "rose";
ModifyName(stu2);
Console.WriteLine($"stu2 after ModifyName is:{stu2.Name}");
int[] num = { 1, 2, 3 };
ModifyArray(num);
Console.WriteLine($"arr2 after ModifyArray is:{num[0]}");
}
static void ModifyName(Student stu1)
{
stu1.Name = "jack";
}
static void ModifyArray(int[] arr)
{
arr[0] = 666;
}
}
打印结果为:
总结
传递值类型参数在调用方法时,值类型参数的值会被复制,因此方法内部的修改不会影响原始变量。