函数的形参前可以带三种修饰符,分别的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. 【a703】求逆序对

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...

  2. Windows完成端口与Linux epoll技术简介(能看懂)

    WINDOWS完成端口编程1.基本概念2.WINDOWS完成端口的特点3.完成端口(Completion Ports )相关数据结构和创建4.完成端口线程的工作原理5.Windows完成端口的实例代码 ...

  3. KMP算法具体解释(贴链接)

    ---------------------------------------------------------------------------------------------------- ...

  4. JSP页面中taglib的uri设置

    今天遇到这样一个问题,使用JAVA做了个WEB应用,其中用到一个自定义标签.该标签的class文件与tld(tld文件中,uri定义为:http://wallimn.iteye.com/myfuncs ...

  5. Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋

    在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一 ...

  6. servlet-显示器

    1.什么是监听器 监听器是实现一个特定的接口java规划,该计划的目的是还调用类方法监听器.java的awt大量使用该模式,如的能力button点击事件.当鼠标点击时,就会调用事件处理程序.又如:在j ...

  7. 各种工具的使用 tricks

    1. 搜狗搜索引擎 因为搜狗与腾讯的合作关系,搜狗搜索引擎提供了"微信"的搜索选项,可直接定位到相关文章,或者公众号. weixin.sougou.com 2. PyCharm P ...

  8. java静态方法Static

    静态方法  是 与类  而  不是与对象 相关联的.

  9. Cocos2d-x layout (两)

    相对于对照布局 Size widgetSize = Director::getInstance()->getWinSize(); Text* alert = Text::create(" ...

  10. wpf 判断鼠标在一段时间内是否移动

    原文:wpf 判断鼠标在一段时间内是否移动 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/config_man/article/details/74 ...