函数
来源:互联网 发布:linux如何连接数据库 编辑:程序博客网 时间:2024/06/02 17:31
一、认识函数:
在C#中,函数是一种方法,可提供在应用程序中的任何一处执行的代码块。
可以理解为一种数学公式,在代码中调用这个公式。
类似c语言里面的函数,这个东西经常用到,能让你的代码有更好的可读性。
一般采用PascalCase 形式编写函数名。
我们一开始接触的函数Main()是控制台应用程序的入口点函数。当执行C#应用程序时,就会调用它包含的入口点函数,这个函数执行完毕后,应用程序就终止了。所有C#可执行代码都必须有一个入口点。
这里我就说下带参函数吧:
1)参数数组
C#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组。参数数组可以使用个数不定的参数调用函数,使用params 关键字定义它们。
eg:
static int SumVals(params int[] vals)
{
int sum = 0;
foreach (int val in vals)
{
sum += val;
}
return sum;
}
static void Main(string[] args)
{
int sum = SumVals(1, 5, 2, 9, 8);
Console.WriteLine("Summed Values = {0}", sum);
}
2)引用参数
要区分于值参数,即函数处理的变量与函数调用中使用的变量相同,而不仅仅是值相同的变量,使用ref 关键字指定参数(类似c语言里面的AA(&b),其中AA是函数名,b是参数,‘&’和ref含义相同)
eg:
static void ShowDouble(ref int val)
{
val *= 2;
Console.WriteLine("val doubled = {0}", val);
}
在函数调用中(这是必须的,因为ref 参数是函数签名的一部分)再次指定它:
int myNumber = 5;
Console.WriteLine("myNumber = {0}", myNumber);
ShowDouble(ref myNumber);
Console.WriteLine("myNumber = {0}", myNumber);
使用ref需要注意
1.函数可能会改变引用参数的值,所以必须在函数调用中使用“非常量”变量
2.其次,必须使用初始化过的变量。C#不允许假定ref 参数在使用它的函数中初始化
3)输出参数
除了按引用传递值之外,还可以使用out 关键字,指定所给的参数是一个输出参数。out 关键字的使用方式与ref 关键字相同(在函数定义和函数调用中用作参数的修饰符)。实际上,它的执行方式与引用参数完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。但是,存在一些重要区别。
1.把未赋值的变量用作ref 参数是非法的,但可以把未赋值的变量用作out 参数。
l2.另外,在函数使用out 参数时,out 参数必须看作是还未赋值。
即调用代码可以把已赋值的变量用作out 参数,存储在该变量中的值会在函数执行时丢失。
二、认识变量的作用域:
给定的变量有一个作用域,访问该变量要通过这个作用域来实现。
要区分全局变量和局部变量
这里要强调的是不止函数要考虑作用域,循环也要考虑作用域(可以理解为代码块);
在代码中,只声明一个简单变量类型,并不会引起其他的变化。只有在给变量赋值后,这个值才占用一块内存空间。如果这种占据内存空间的行为在循环中发生,该值实际上定义为一个局部值,在循环的外部会超出了其作用域。
所以一般情况下,最好在声明和初始化所有变量后,再在代码块中使用它们。一个例外是把循环变量声明为循环块的一部分
三、Main函数:
前面介绍了main函数的一部分,Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。也就是说,在执行过程开始时,会执行Main()函数,在Main()函数执行完毕时,执行过程就结束了。
细心的同学会发现这个函数可以返回void 或int,有一个可选参数数string[] args带返回值的一般情况下,返回0 反映了“正常”的终止(即应用程序执行完毕,并安全地终止)。
Main()的可选参数args 是从应用程序的外部接受信息的方法,这些信息在运行期间指定,其形式是命令行参数。就像Windows 中的记事本应用程序。在命令提示窗口中键入notepad,或者在Windows的“开始”(Start)菜单中选择“运行”(Run)选项,再在打开的窗口中键入notepad,就可以运行该应用程序。在执行控制台应用程序时,指定的任何命令行参数都放在这个args 数组中,接着可以根据需要在应用程序中使用这些参数。
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 地图处理方法-判断一个点是否在某个区域内
- 关于自己接触for..in循环的坑
- 网络编程-read()/write()/assert()函数
- js获取ur?后的参数
- 一个java高级工程师的进阶之路
- 函数
- HTTP代理
- 1075.我们爱汉诺塔
- 复化梯形、复化simpson以及复化Cotes的Matlab实现
- POJ
- 排查mysql innodb Lock wait timeout exceeded; try restarting transaction的问题
- 当当VP陈立均:当当图书三季度市场份额以45%遥遥领先,四季度开启18周年庆回馈读者阅读盛宴
- 误删了ubuntu的当前image该怎么办
- [转自Oracle官方技术博客]为什么数据库中大量的server process没有对应的session?