预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/qq731109249/archive/2012/11/01/2750401.html"【C#学习笔记】C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习 1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值。在方法体代码中代表了值本身参与运算。形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在一个同名的局部变量,不管他们的类型是否相同,都是不允许出现同名的。 看下面的代码示例: 1//这其中的strName就是一个形参也是一个变量,不允许出现同名的局部变量 2publicvoidSayHelloTo(stringstrName) 3{ 4Console.WriteLine("我的名字是{0}",strName); 5} 形参的特点: ①形参是一个变量,它具有变量的全部特点。②方法的形参可以有多个,形参直接使用逗号进行隔开,即使类型相同的多个参数也不可以合并声明。 2)实参 实参是相对于形参而言的,形参是实际值的“替身”,这个替身所代表的实际值即为实参。实际值可以是一个具体的值,也可以是一个变量 看下面的代码示例: 1staticvoidMain(string[]args) 2{ 3Programpro=newProgram(); 4intnNum=10; 5//当调用Add方法时,传进去两个参数,第一个是实际的值, 6//第二个nNum是变量,但是在传入方法时已经初始化 7intnResult=pro.Add(20,nNum); 8} 9 10//这里的a,b即为所谓的形参 11publicintAdd(inta,intb) 12{ 13returna+b; 14} ①实参用于初始化形参的实际值或者表达式②实参位于要调用的方法参数列表中。 3)按值传递参数 值参数是通过将实参的值复制到形参。来实现将值传递到方法,也就是所谓的按值传递,当方法被调用是,CLR做如下操作: ①在托管栈堆中为形参分配空间②将实参的值复制到形参 其中,在值参数中,实参也可以是任何计算结果满足类型要求的表达式,不一定是变量。 看下面的代码示例: 1staticvoidMain(string[]args) 2{ 3Programpro=newProgram(); 4//intnNum=10; 5//当调用Add方法时,传进去两个参数,第一个是实际的值, 6//第二个nNum是变量,但是在传入方法时已经初始化 7//intnResult=pro.Add(20,nNum); 8inti=10; 9intw=20; 10//在这里i*2和(w+10)/10充当了实参的角色 11intnResult=pro.Add(i*2,(w+10)/10); 12Console.WriteLine(nResult); 13} 14 15//这里的a,b即为所谓的形参 16publicintAdd(inta,intb) 17{ 18returna+b; 19} 下面看一段代码,分别观察形参,实参在托管堆和托管栈中的分配和使用情况 1classProgram 2{ 3staticvoidMain(string[]args) 4{ 5Programpro=newProgram(); 6Rectanglerectange=newRectangle(); 7intmyValue=10; 8 9//这里的rectange,myValue是实参 10pro.CalculateArea(rectange,myValue);//调用方法 11} 12 13//这里的(Rectanglerect,intvalue)是形参 14publicvoidCalculateArea(Rectanglerect,intvalue) 15{ 16rect.Length+=10; 17rect.width+=15; 18rect.Area=rect.Length*rect.width; 19value++; 20} 21} 22 23//一个矩形类 24publicclassRectangle 25{ 26publicintLength=10; 27publicintwidth=15; 28publicintArea; 29} ①在方法被调用前:系统在栈中为Rectangle类的实例rectange和值类型myValue分配空间,其中引用类型rectange指向堆中的Rectangle对象实例,myValue是值类型,因此其值位于托管栈中。演示图如下 ②方法调用开始时:实参将值复制到CalculateArea的形参,其中rectange为引用类型,