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 枚举
枚举是由程序员定义的类型,与类或结构一样。
*枚举只有一种类型的成员:命名的整数值常量。
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,递归相关推荐
- .net程序员的盲点(一):参数修饰符ref,out ,params的区别
C#中有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它们疑似破坏面向对象特性.但是既然m$把融入在c#体系中,那么我们就来认识一下参数修饰符ref,out ,param ...
- 参数修饰符ref,out ,params的区别
C#中有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它们疑似破坏面向对象特性.但是既然m$把融入在c#体系中,那么我们就来认识一下参数修饰符ref,out ,param ...
- 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 ...
- 《对象程序设计》课程 课程设计、考试安排 及 教师建议(2014.06.30修正)
[网络问卷-2014.06.30 上午11:30左右回答] 网络121班<对象程序设计>课程设计自我评估调查(问卷网址:http://www.sojump.com/jq/3614612.a ...
- PAT甲级1115 Counting Nodes in a BST (30分):[C++题解] 递归建二叉搜索树、dfs求一层结点数量
文章目录 题目分析 题目链接 题目分析 分析 首先本题给定的二叉搜索树的定义和其他地方的不同.本题小于等于的是左子树,右子树是大于根结点的. 然后说一下做题的思路. 给定一串数据,让构造二叉搜索树. ...
- c#中out、ref和params的用法与区别
ref和out都对函数参数采用引用传递形式--不管是值类型参数还是引用类型参数,并且定义函数和调用函数时都必须显示生命该参数为 ref/out形式.两者都可以使函数传回多个结果. 两者区别: 两种参数 ...
- C#中 out、ref、params 修饰符使用方法
使用 out 关键字可以一个方法返回多个返回值. int i; string str; bool b;public void MyReturnMethod(out int a, out string ...
- C#方法的参数 Ref Out Params 4种类型的参数
转载:http://www.cnblogs.com/kissdodog/archive/2013/05/11/3072815.html 一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传 ...
- 【PAT - 甲级1004】Counting Leaves (30分) (dfs,递归)
题干: A family hierarchy is usually presented by a pedigree tree. Your job is to count those family me ...
最新文章
- c++ primer,友元函数上的一个例子(By Sybase)
- html select 多选取值,下拉框多选实现 jquery-multiselect 并获取选中的值
- Leetcode 88. 合并两个有序数组 解题思路及C++实现
- 富人和穷人的对比图,时刻提醒自己!
- [HDU] 3491 Thieves
- 设置checkbox的只读
- django+echarts+ajax异步+显示优化--基本例子
- J2EE 各种关系逻辑图
- C# 仿windows资源管理器
- python批量将word转换成pdf_python批量实现Word文件转换为PDF文件
- python class类_学习python中的class类
- chrome Android 前进 后退,停止Chrome后退/前进两根手指滑动
- cosc2406数据库辅导assignment
- pvbox3直播频道服务器维护,新一轮大服务器实装公告:3月12日凌晨维护
- 5G已开始商用 目前提供5G商用服务的国家有哪些?
- 黑马程序员--技术网站网址2
- 技术平台分层体系-应用开发者看待容器技术带来的变化
- 使用Keras进行图像分类
- 你的团队健康吗?如何打造一支健康的团队?
- 我的spring入门级理解
热门文章
- Visual C++2005库的十项突破性变化
- c语言修仙角色,C语言修仙手游-C语言修仙手游安卓版V7.4.0预约_第一手游网
- 数字电路中时钟抖动 Jitter 和 偏移 Skew
- pytorch 数据加载为python提供了cpu全速跑跑其他任务的能力
- 各种pytorch项目
- 笔试算法题(55):快速排序实现之三路划分, 三元中值法和插入排序处理小子文件...
- MySQL性能优化速记
- 《HelloGitHub》第 20 期
- Reinhold就Jigsaw投票一事向JCP提交公开信
- TextInputLayout