本文共 646 字,大约阅读时间需要 2 分钟。
之前一直认为transform.position.x是只读的所以不能直接赋值,今天深究了一下,其实并不是这个原因
定位到Vector3类中,发现并没有对x、y、z进行读写限制,那为什么不能够赋值呢?
再定位到Transform类中,position是一个Vector3类型的属性,而Vector3是一个结构体,所以position是一个结构体,结构体是一个值类型,值类型在方法传递的时只传递值的副本也就是说当我们transform.position.x = 1时调用属性的Get方法得到position,但是这个position只是一个副本,对这个副本做的任何修改都对原position无影响,显然这样做是没有意义的,所以编译器禁止你做这样的操作与下面的程序一个道理,值类型传值的时传递的只是副本
using System;class Test{ void Swap(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp; } static void Main() { int a = 1; int b = 2; Test t = new Test(); t.Swap(a, b); Console.WriteLine(a + " " + b); //1 2 }}
转载地址:http://bvyvf.baihongyu.com/