首页 > 代码库 > 2014.8.30.ref,out,params,enum,递归
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 Sat10 }
1 Console.WriteLine((int)days.Mon);2 Console.WriteLine((int)days.Sat);
打印结果为:
2014.8.30.ref,out,params,enum,递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。