2014.8.30.ref,out,params,enum,递归

(一)ref

函数形参变量的输入有两种方式:传值,传址。而ref则为传址。eg:

 1 static int Add(ref int n)
 2 {
 3     Console.WriteLine("Add----1:{0}",n);
 4     n = n + 10;
 5     Console.WriteLine("Add----2:{0}",n);
 6     return n;
 7 }
 8 static void Main(string[] args)
 9 {
10     int a = 5;
11     Console.WriteLine("Main----1:{0}",a);
12     Add(ref a);//执行函数Add后,并没有把a的值更新,但加上ref则把a在内存中的地址也传给函数了,相应的a指向的地址也就随之改变了。a = Add(a);
13     Console.WriteLine("Main----2:{0}",a);
14     Console.ReadKey();
15 }

打印结果为:

(二)out

out顾名思义,即输出。相当于一个函数可以有多个返回值,这是C#中特有的。

 1 static int Add(int n,out int x)
 2 {
 3     Console.WriteLine("Add----1:{0}",n);
 4     n = n + 10;
 5     x = 33;
 6     Console.WriteLine("Add----2:{0}",n);
 7     return n;
 8 }
 9 static void Main(string[] args)
10 {
11     int a = 5;
12     int x;
13     Console.WriteLine("Main----1:{0}",a);
14     a=Add(a,out x);
15     Console.WriteLine("Main----2:{0},{1}",a,x);//x相当于第二个返回值,它的值也改变了,至少目前我是这么理解的
16     Console.ReadKey();
17 }

打印结果为:

(三)params

在数组形参前面使用,可以赋多个值。eg:

 1 static void PaiXu(params int[] nums)
 2 {
 3     for (int i = 1; i < nums.Length - 1; i++)
 4     {
 5 for (int j = 1; j <= nums.Length - i; j++)
 6 {
 7     if (nums[j] > nums[j - 1])
 8     {
 9 int temp = nums[j];
10 nums[j] = nums[j - 1];
11 nums[j - 1] = temp;
12     }
13 }
14     }
15     for (int i = 0; i < nums.Length; i++)
16     {
17 Console.Write(nums[i]);
18     }
19 }
20
21 PaiXu(3, 5, 7, 2, 1, 8);//调用的时候可以赋任意多个值了

(四)enum 枚举

枚举是由程序员定义的类型,与类或结构一样。

*与结构一样,枚举是值类型,因此直接存储它们的数据,而不是分开存储成引用和数据。
*枚举只有一种类型的成员:命名的整数值常量。

eg:

 1 enum days
 2 {
 3     Sun = 1,
 4     Mon,
 5     Tue,
 6     Wed,
 7     Tur,
 8     Fri=15,
 9     Sat
10 }
1 Console.WriteLine((int)days.Mon);
2 Console.WriteLine((int)days.Sat);

打印结果为:

时间: 2024-10-21 22:20:56

2014.8.30.ref,out,params,enum,递归的相关文章

2014.7.30【于明天返校

每当要离开一个地方的时候,就会特别的难过 与记忆有关,无论长短... 20天前, 我来到这个完全陌生的城市 我记得我day0的时候是这么写的,现在看来简直233333 居然还有气场..哈哈哈哈哈哈哈 之后过了一天, 我就和我对面那群人混熟了... 我认识了很傻的太太,很逗比的笑尘,很死宅的一奇,很认真的鸿辉,很高的晨铿,唱歌很棒的640,很萌的室友,以及人很好的林熠和泉一的ccy... 其实还有很多很多很可爱的人 我只想说我都不会忘记.... 日子一天天的过着.. 每天都对自己说一句bless

每日一题2014/7/30

Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 134035   Accepted: 32776 Description Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the n

2014.7.30 Director::getInstance()-&gt;setNotification

主要是用于介绍cocos2d-x的另一个渲染树  实现不同的效果区别 第一种: 直接replace scene Scene* loadingScene = LoadingLayer::createScene(); Director::getInstance()->replaceScene(loadingScene); //Director::getInstance()->setNotificationNode(loadingScene); //Director::getInstance()-&

C# 中out,ref,params参数的使用

C#中有三个高级参数,分别是out,ref,params: 1.out参数 方法使用return 只能返回一个值(一个数值或一个指针值),out参数可以帮助我们在一个方法中返回多个值,不限类型. 在使用out参数的时候需要注意: 在调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,赋值也会在方法中被覆盖掉. 方法使用了out参数传递变量时,就是要返回值,所以必须在方法内为其赋值. 方法的参数使用out关键字修饰时,在调用该方法时,也要在out参数传递的变量前面加上out关键字才

【谜客帝国】第九届老爱原创谜会(2014.12.30)

谜客帝国第九届老爱原创谜会(2014.12.30)主持:瓷       计分:晶莹1.现有十人达标准(字)规.注:双扣2.乱呈能,别下毒(11笔字)理3.难得知错又开口(汉人)吕雉4.高校新生载入校(3字年纪比较词)大一岁5.这些问题都不懂(即物赠)几盘咸菜6.太太在聚餐(3字点心)老婆饼7.独活(期货术语•秋千格)做单8.打的付款,节省消费(即赠物)十二支鲜花9.对林散之有安排(2字植物)桉树10.这图可更新(象声词)叮咚11.“苍天骑士”拍马屁(3字外神话人物•上楼格)阿修罗.注:神官“苍天

ref out params

ref侧重于将一个值传入函数进行处理,再将处理后的值返还回去:参数是在函数外进行赋值.--将值类型传递转换成引用类型传递 out侧重于函数需要返回多个值:参数是在函数内进行赋值,函数外只进行声明数据类型. params可变参数 out实例: 1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.IO; 5 using System.Linq; 6 using S

C#中的out、ref、params详解

out参数: 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组.但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数.out参数就侧重于在一个方法中可以返回多个不同类型的值. ref参数: 能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法.ref参数要求在方法外必须为其赋值,而方法内可以不赋值. params可变参数: 将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理.Params可变参数必须是

C#方法中三个重要的参数:out、ref、params

备注:适用于初学者,自学于传智播客. 1.out参数. 概念:如果在一个方法中,返回多个相同类型值的时候,可以考虑返回一数组.但是返回多个不同类型值的时候,返回数组显然不能解决问题,这时就引入out参数.out参数侧重于在一个方法中可以返回多个不同类型的值. 代码举例: 用户登陆: main:Test(numbers, out max1, out min1, out sum1, out avg1, out b, out s, out d); 方法:public static void Test(

C#方法的参数 Ref Out Params 4种类型的参数

转载:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072815.html 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递. 方法被调用时,CLR做如下操作: 1.在托管堆栈中为形参分配空间: 2.将实参的值复制到形参. 这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值. public class Program { static void Main(string[]