代码:
struct Coordinate
{
public int X { get; set; }
}
class CoordinateClass
{
public int X { get; set; }
}
private void ChangelStruct(Coordinate coordinate)
{
coordinate.X = 100;
}
private void ChangelClass(CoordinateClass coordinateClass )
{
coordinateClass.X = 100;
}
Coordinate coordinate = new Coordinate();
CoordinateClass coordinateClass = new CoordinateClass();
ChangelStruct(coordinate);
ChangelClass(coordinateClass);
Console.WriteLine(coordinate.X );
Console.WriteLine(coordinateClass.X);
输出:
0
100
从上可以看出,Struct作为形参传入方法后,并没有被改变,这是因为,它是值类型,作为形参时,它先在栈中拷贝了一个副本,然后这个副本在方法里面进行一系列的操作,但是原始的地址的值并没有被改变;