(一)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);

打印结果为:

转载于:https://www.cnblogs.com/zsmj001/p/3948438.html

2014.8.30.ref,out,params,enum,递归相关推荐

  1. .net程序员的盲点(一):参数修饰符ref,out ,params的区别

    C#中有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它们疑似破坏面向对象特性.但是既然m$把融入在c#体系中,那么我们就来认识一下参数修饰符ref,out ,param ...

  2. 参数修饰符ref,out ,params的区别

    C#中有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它们疑似破坏面向对象特性.但是既然m$把融入在c#体系中,那么我们就来认识一下参数修饰符ref,out ,param ...

  3. new Date('2014/04/30') 和 new Date('2014-04-30') 的区别

    new Date('2014/04/30') Wed Apr 30 2014 00:00:00 GMT+0800 (中国标准时间) new Date('2014-04-30'); Wed Apr 30 ...

  4. 《对象程序设计》课程 课程设计、考试安排 及 教师建议(2014.06.30修正)

    [网络问卷-2014.06.30 上午11:30左右回答] 网络121班<对象程序设计>课程设计自我评估调查(问卷网址:http://www.sojump.com/jq/3614612.a ...

  5. PAT甲级1115 Counting Nodes in a BST (30分):[C++题解] 递归建二叉搜索树、dfs求一层结点数量

    文章目录 题目分析 题目链接 题目分析 分析 首先本题给定的二叉搜索树的定义和其他地方的不同.本题小于等于的是左子树,右子树是大于根结点的. 然后说一下做题的思路. 给定一串数据,让构造二叉搜索树. ...

  6. c#中out、ref和params的用法与区别

    ref和out都对函数参数采用引用传递形式--不管是值类型参数还是引用类型参数,并且定义函数和调用函数时都必须显示生命该参数为 ref/out形式.两者都可以使函数传回多个结果. 两者区别: 两种参数 ...

  7. C#中 out、ref、params 修饰符使用方法

    使用 out 关键字可以一个方法返回多个返回值. int i; string str; bool b;public void MyReturnMethod(out int a, out string ...

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

    转载:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072815.html 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传 ...

  9. 【PAT - 甲级1004】Counting Leaves (30分) (dfs,递归)

    题干: A family hierarchy is usually presented by a pedigree tree. Your job is to count those family me ...

最新文章

  1. c++ primer,友元函数上的一个例子(By Sybase)
  2. html select 多选取值,下拉框多选实现 jquery-multiselect 并获取选中的值
  3. Leetcode 88. 合并两个有序数组 解题思路及C++实现
  4. 富人和穷人的对比图,时刻提醒自己!
  5. [HDU] 3491 Thieves
  6. 设置checkbox的只读
  7. django+echarts+ajax异步+显示优化--基本例子
  8. J2EE 各种关系逻辑图
  9. C# 仿windows资源管理器
  10. python批量将word转换成pdf_python批量实现Word文件转换为PDF文件
  11. python class类_学习python中的class类
  12. chrome Android 前进 后退,停止Chrome后退/前进两根手指滑动
  13. cosc2406数据库辅导assignment
  14. pvbox3直播频道服务器维护,新一轮大服务器实装公告:3月12日凌晨维护
  15. 5G已开始商用 目前提供5G商用服务的国家有哪些?
  16. 黑马程序员--技术网站网址2
  17. 技术平台分层体系-应用开发者看待容器技术带来的变化
  18. 使用Keras进行图像分类
  19. 你的团队健康吗?如何打造一支健康的团队?
  20. 我的spring入门级理解

热门文章

  1. Visual C++2005库的十项突破性变化
  2. c语言修仙角色,C语言修仙手游-C语言修仙手游安卓版V7.4.0预约_第一手游网
  3. 数字电路中时钟抖动 Jitter 和 偏移 Skew
  4. pytorch 数据加载为python提供了cpu全速跑跑其他任务的能力
  5. 各种pytorch项目
  6. 笔试算法题(55):快速排序实现之三路划分, 三元中值法和插入排序处理小子文件...
  7. MySQL性能优化速记
  8. 《HelloGitHub》第 20 期
  9. Reinhold就Jigsaw投票一事向JCP提交公开信
  10. TextInputLayout