本帖最后由 曾玉锋 于 2013-3-24 22:03 编辑
额,没必要纠结太底层的东西哈。下面是我的对ref与out的理解
ref与out 一般是用于值类型参数传递的时候,因为对于引用类型的对象,没必要用ref与out修饰,结果都一样的(string 类型除外,因为string类型的对象的不可变性)。
下面是分析值类型的参数传递
out:相当于是有一个空间来等待接收东西,所以,是否给用out修饰的变量赋值,对其结果没有任何影响,因为编译器会始终认为传入的out修饰的变量为未赋值状态。
ref: 如果未被ref修饰,则传递的参数和方法中操作的参数其实不是同一个对象,而是从原参数对象中copy了一份值赋给一个新的对象,然后在方法中对这个新的对象进行操作,所以,对这个新对象的任何操作,不影响原参数对象。
而如果被ref修饰,则相当于把参数对象本身传入方法中,所以对参数的任何修改都会得到保留。
|