1
4
在C语言中,任何结构都是值类型,任何类都是引用类型。将值类型作为参数传递给另一个方法时,该方法无法更改原始值(除非使用ref关键字传递值类型)。当您将引用类型作为参数传递给另一个方法时,该方法对对象所做的任何更改都将在从该方法返回时反映在对象中。输出为:
方法1:500
另一个方法中的i变量不能更改方法中的变量i的值,因为i是值类型;因此方法(200)中i的值在调用另一个方法时保持不变。
更改方法所看到的值,因此方法的输出为1:500。在以下行中分配TestClass的新实例时:
|
2
5
输出应为: Another 1:100 Another 2:400 Method 1:500 Method 2:200
C#按值传递,除非
然后这一行创建一个新的不相关的对象:
有时更容易看到图表中发生了什么,其中最上面一行显示变量,最下面一行显示它们所引用的对象: Before assignment: After assignment: +-------------+ +-------------+ +-------------+ +-------------+ | Method | | Another | | Method | | Another | | testClass | | testClass | | testClass | | testClass | +-------------+ +-------------+ +-------------+ +-------------+ | | | | | | | | v | v v +-----------+ | +-----------+ +-----------+ | TestClass |<-----------+ | TestClass | | TestClass | | i = 300 | | i = 300 | | i = 100 | +-----------+ +-----------+ +-----------+
|
3
0
基本上,
更改对象内部的值。您正在传递这个对象,因此所有引用该对象的对象都将看到这个更改。但是
|
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |