函数的形参前可以带三种修饰符,分别的out、ref、param。

out:让函数可以输出“多个值”,并不是真正的输出多个值。

ref:相当于引用传递,在函数内部赋值会影响变量的值。

params:可变参数,当不知道数组的个数时可以方便的使用。

一、out

代码解析:

1.使用格式,定义时:out 类型 形参数名。使用时:out 实参名。

定义out参数变量时,可以不为变量赋值,因为赋值也是无用的,必须在方法内重新赋值。

2.可以看到,调用函数后,count的值变成了3。

3.C#7.0对out参数做了改进,目前还没有研究。

二、ref

1.使用格式,定义时:ref 类型 形参名。调用时:reg 实参名。

可以看到,使用ref的变量在使用前是必须赋值的,因为函数内部可以不对其做操作。

2.由结果可知,count的值被赋值为10086了。对普通的参数,形参值的改变是不会影响实参值的。

三、params

1.使用格式,定义:params 类型的数组形式(如:int[])  形参名,必须是在所有形参的结尾定义。

2.调用时,可以不为params传递参数,此时,形参将是一个长度为0的数组,而不是NULL。

3.可以看到,对params可变参数的赋值形式,

a.可以不传递参数。

b.可以使用单个的参数拼凑成数组。

c.直接传递数组。

4.对可变参数的操作和对数组的操作一致,只是需要对其进行判断是否传递了参数。

5.params可变参数也是需要传递赋了值的变量。

四、补充

上述的三种方式都是为了函数返回多个参数值,如果对应的参数有关联性,

可以把它们封装成一个类,这样也能达到返回多个值的效果。

C#函数参数前的修饰符的更多相关文章

  1. [Reprint]C++函数前和函数后加const修饰符区别

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...

  2. C++函数前和函数后加const修饰符区别

    class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...

  3. C++ 成员函数前和函数后加const修饰符区别

    博客转载自: https://www.iteblog.com/archives/214.html 分析以下一段程序,阐述成员函数后缀const 和 成员函数前const 的作用 #include< ...

  4. 14_java之变量|参数|返回值|修饰符

    01java中的文档注释和制作 * A: 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其 他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@ ...

  5. 函数后面的const修饰符的作用

    比如 void Fun() const; 的const是修饰什么的? 其实是修饰this指向的对象的. 这篇文章很详细的说明了const的作用,其中第三点说明了这种const的作用:const的用法, ...

  6. C#深入浅出 修饰符(二)

    1.函数参数前的修饰符 params ,ref ,out params修饰的数据类型只能数组,用于参数不固定时:且此参数位于所有形式参数的最后: public static int GetMax(pa ...

  7. python函数修饰符@的使用

    python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则:(1)修饰符是一个函数(2)修饰符取被修饰函数为参数(3)修饰符返回一个新函数 ...

  8. Java基础之数据类型、内存、修饰符、代码块

    Java 数据类型 基本数据类型 数值:int.short.long 字符:char 布尔:boolean 引用数据类型 class(类) interface(接口) 数组[] 所占字节数(1 byt ...

  9. Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)

    首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...

随机推荐

  1. XMPP之ios即时通讯客户端开发-mac上搭建openfire服务器(二)

    come from:http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html 一.下载并安装openfire 1.到http://w ...

  2. 【19.27%】【codeforces 618D】Hamiltonian Spanning Tree

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  3. No USB devices or running emulators detected”

    每次重装系统之后,安装andorid studio后,使用真机调试代码,就会出现"No USB devices or running emulators detected"的错误, ...

  4. Indexing Sensor Data

    In particular embodiments, a method includes, from an indexer in a sensor network, accessing a set o ...

  5. asp.net中C#调用存储过程

    创建存储过程: create procedure houseCount ( ), @house_count int output ) as select @house_count=COUNT(*) f ...

  6. 如何移除解决方案中的TFS版本控制

    1.清除(删除)项目下的所有版本控制文件,这些文件有:*.vssscc,*.vspscc删除这些版本控制文件比较简单,搜索这些后缀的文件,删除即可. 2.修改项目的解决方案文件:*.sln (1).先 ...

  7. 三星260亿美元的豪赌:想垄断DRAM和NAND闪存市场(规模经济让对手难以招架)

    腾讯科技讯 据外媒报道,经过50年的发展,半导体市场仍然显得非常活跃,它在今年有望增长20%.随着高增长而来的是供应短缺,这就是DRAM和闪存价格为什么今年会上涨的原因. 三星在DRAM和闪存市场占有 ...

  8. 【003】【Java虚拟机——对象死亡的判断】

    对象死亡! 垃圾收集器在对堆进行回收前,首先要做的事情就是要确定这些对象之中哪些还"存活"着, 哪些已经"死去" (即不可能再被不论什么途径使用的对象). 1)  引用计 ...

  9. redis在windows10上跑起来

    原文:redis在windows10上跑起来 今天,开始学习redis,发现大多数redis都是在Linux上面运行的,可是我想把它放到windows上面运行,经过查找资料,在GitHub上面发现了一 ...

  10. OpenGL(二十二) gluBuild2DMipmaps 加载Mip纹理贴图

    当纹理被用于渲染一个面积比它本身小很多的对象时,会由于纹理图像的降采样率不足而导致混叠现象,主要的表现特征是纹理图像的闪烁,出现纹理躁动.特别是在场景远近移动变换时,这种闪烁情况更为明显,严重可能会影 ...