现在的位置: 首页 > 综合 > 正文

关于向方法中传递参数的问题

2014年10月23日 ⁄ 综合 ⁄ 共 550字 ⁄ 字号 评论关闭

 1. C#的变量分为两种,一种是值类型(如int),一种是引用类型(如我们自定义的所有的class)。简单的说,值类型自身就存放有值,如int i = 10,你可以理解成i就是实实在在的10;而引用类型

 
,MyClass obj = new Class(),obj--(保存在栈中)本身并不存放new Class()--(保存在堆中),他只是 指向 new Class() 。  
 
2. C#中的方法,会接受参数,对接受到的参数,C#也会有两种处理方法。一种是“值传递”(我们通常使用的就是这种),另一种是“引用传递” ,其特征就是关键字ref或out,如void MyMethod
 
(ref int para)。所谓值传递,就是给方法传递一个变量的“副本”,所以变量本身不会受到方法的影响;而引用传递,就是将变量本身传递给函数(不够严谨,但可以这样理解),所以,变量会受
 
到函数的影响。  
 
所以这里就有2*2=4种组合:
 
值类型的值传递     将值类型(如int i)的副本传递给方法
值类型的引用传递       将值类型(如int i)本身传递给方法
引用类型的值传递    将引用(如MyClass obj)的副本(而不是该引用所指向的内容new MyClass())传递给方法    
引用类型的引用传递     将引用本身(如MyClass obj)传递给方法

抱歉!评论已关闭.