第四篇 函数
来源:互联网 发布:网络恶搞 编辑:程序博客网 时间:2024/05/17 05:09
1.使用函数的名称和参数定义函数的签名。
2.参数数组。
(1)C#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组。用params关键字定义它们。
static <returnType> <functionName> (<p1Type> <name>,...,params <type>[] <name>)
{
...
return <returnValue>;
}
调用时使用<functionName>(<p1>,...,<val1>,<val2>,...);
值得注意的是,这里同样可以传入一个数组,只能是一个数组,不能在数组前或后再加入单个变量。
3.引用参数和值参数。
引用参数的定义必须在变量类型之前加入ref关键字,函数调用时也必须加入ref关键字。
同时注意,用作ref参数的变量的两个限制。(1)参数必须是非const的。(2)必须使用初始化过后的变量。
4.输出参数。
除了使用引用之外,还可以使用out关键字来指定输出参数。out关键字和ref关键字使用相同,都必须在函数定义和函数调用用作参数的修饰符。
注意:(1)可以把为赋值的变量用作out参数,同时out参数必须看做是未赋值的。(在函数体内,对为赋值的out参数进行输出操作会出错。)
(2)在函数体内,必须对out参数赋值。
5.变量的作用域。
(1)在控制台应用程序中,全局变量必须使用static或const关键字来定义。
(2)变量的作用域,这里和C++中有很大的区别。
c++中定义一个string类型,就相当于定义一个指针,指向堆中的内存,在不同的编译器中,这个指针的大小不同,vs下的编译器的字节大小为28.
然后,在C#中,定义一个string类型,就只是取了个名字,并没有分配具体的内存。所以就有了以下两种使用的情况:
①例,在循环外声明,未进行初始化,然后在顺环内对变量初始化。则退出顺环后,变量依然相当于未初始化。
②在顺环外声明并且初始化后,然后再在顺环中修改变量,则退出顺环后,变量为在顺环中修改后的值。
有点绕,书中给的这一段话比较好理解:只声明一个简单变量类型,并不会引起其他变化。只有在给变量赋值后,这个值才占用一块内存空间。如果,这种占用内存的行为在顺环中发生,则该值实际上定义为一个局部值,在顺环外部使用会超出其作用域。
因此,最好在声明和初始化所有变量后,再在代码块中使用它们。
6.函数的重载
这里有一点和C++不同的地方在于,值参数和引用参数方面。
C++引用参数,在函数调用时是不用使用&符号的,所以,对应也就没有值参数和引用参数两个版本。
C#因为其签名不同,且在函数顶用引用函数时,必须使用ref关键字。所以,对值参数和引用参数可以重载,且在调用时,根据是否有ref关键字来确定调用的是哪一个版本。
7.初始委托
委托(delegate)是一种可以把引用存储为函数的类型,有点绕。现在暂时将可以将委托理解为一种特殊的类型,委托的声明非常类似于函数,但是不带函数体,且需要使用delegate关键字。在定义了委托后,就可以声明该委托的类型,接着把这个变量初始化为与委托有相同返回类型和参数列表的函数引用。之后,就可以使用委托变量调用这个函数,就像该变量是一个函数一样。
注意:有了引用函数的变量后,还可以执行把委托变量作为参数传递给一个函数,这样,该函数就可以使用委托来调用它引用的任何函数。
委托的声明:例:
delagate double ProcessDelegate(double param1, double param2);
定义委托变量:
ProcessDelegate process;
对委托进行初始化:
process =Multiply;
或者:process = new ProcessDelegate(Multiply);
- 第四篇 函数
- 【C语言】第四篇·函数调用
- Swift学习笔记第四篇(函数)
- 第四讲第四篇
- 函数第四节
- 函数第四次练习
- Swift第四课 函数
- Python函数第四节
- 第四章 JavaScript 函数
- 第四章 函数
- 跟我一起学习C++虚函数--第四篇
- 新手学Python 第四篇(函数、类、模块)
- 五子棋AI算法第四篇-启发式搜索函数
- java学习---第四篇static关键字以及主函数定义
- ORACLE函数介绍第四篇 非著名函数之聚合函数
- 第四篇
- 第四篇
- 第四篇
- 生产者消费者模型
- Windows下利用CMake和VS编译OpenCV
- LeetCode题目:Integer to Roman
- 34. 有4个学生,每个学生有5门课程的成绩,输入任意学号,输出该学生的全部成绩(完成fun函数)。
- 三层架构总结
- 第四篇 函数
- day01
- linux常见命令
- 安卓Activity的LaunchMode
- eclipse中activiti插件的正确下载姿势
- C++设计模式之代理模式
- day02 语句
- Android-Activity的LaunchMode和退出应用程序
- 35. 编写完成fun函数实现如下功能:从键盘输入任意一个正整数,求出它的非偶数因子,