C# Tips
2009-05-07 08:26:46 来源:WEB开发网核心提示:1.值类型和引用类型对于C#的变量来说,有两种类型,C# Tips,值类型(Value Type)和引用类型(Reverence Type),两者不同点: 值类型继承自ValueType 如下图: 两者存储方式不同: 值类型变量存储在栈当中, 在这种情况下,方法内部对于形参的引用指向的成员数据改变将反映到实参,引
1.值类型和引用类型
对于C#的变量来说,有两种类型,值类型(Value Type)和引用类型(Reverence Type)。两者不同点:
值类型继承自ValueType
如下图:
两者存储方式不同:
值类型变量存储在栈当中。引用类型内存数据结构表示分有两部分构成,一部分引用,存储在在栈中, 一部为实际变量成员,存储在在堆中。
如图:
图片看不清楚?请点击这里查看原图(大图)。
注意:以上情况是指值类型和引用类型不是作为引用类型的成员,如果作为引用类型变量成员,值类型的数据和引用类型的引用都存储在栈中。
2.方法的参数修饰符 ref ,out ,params:
默认情况下,对于值类型参数的传递,其形参(Formal parameter)是实参(Formal parameter)的拷贝。在方法中对于形参所作的任何更改不会影响到实参。 对于引用类型的参数的传递,其形参(Formal parameter)是实参(Formal parameter)的部分拷贝(shallow clone),通常也叫浅拷贝。 形参只拷贝了的引用部分(即:在栈中存储的部分),这个引用同样指向实参的在堆(Heap)中的对象数据。 在这种情况下,方法内部对于形参的引用指向的成员数据改变将反映到实参,而对于形参的引用本身的更改不会影响到实参。
赞助商链接