函数
函数的定义包括函数名、返回类型以及一个参数列表,这个参数列表指定了该函数需要的参数数量和参数类型。函数的名称和参数(不是返回类型)共同定义了函数的签名。
一、定义和使用函数
函数定义由以下几部分组成:
关键字
函数名后跟圆括号
一个要执行的代码块,放在花括号中
函数Main()是控制台应用程序的入口点程序。当执行C#应用程序时,就会调用它包含的入口点函数,这个函数执行完毕后,应用程序就终止了。所有C#可执行代码必须有一个入口点。
void这个关键字表明函数没有返回值。
1.1.返回值
通过函数进行数据交换的最简单方式是利用返回值。由返回值的函数会最终计算得到这个值,就像在表达式中使用变量时,会计算得到变量包含的值一样。与变量一样,返回值也有数据类型。
当函数返回一个值时,必须采用以下两种方式修改函数:
1.在函数声明中指定返回值的类型,但不使用关键字void;
2.使用return关键字结束函数的执行,把返回值传送给调用代码。
当函数接受参数时,必须指定以下内容:
1.函数在其定义中指定接受的参数列表,以及这些参数的类型;
2.在每个函数调用中提供匹配的实参列表。
1.2.参数
当函数接受参数时,必须指定以下内容:
1.函数在其定义中指定接受的参数列表,以及这些参数的类型;
2.在每个函数调用中提供匹配的实参列表。
在调用函数时,必须使提供的参数与函数定义中指定的参数完全匹配,这意味着要匹配参数的类型、个数和顺序。
C#允许为函数指定一个(只能指定一个)特殊参数,这个参数必须是函数定义中最后一个参数,称为参数数组。参数数组允许使用个数不定的参数来调用参数,可使用params关键字定义它们。
带有值参数的函数的含义:在使用参数时,是把一个值传递给函数所使用的一个变量。在函数中对此变量的任何修改都不影响函数调用中指定的参数。
“引用”传递参数:即函数处理的变量与函数调用中使用的变量相同,而不仅仅是值相同的变量。因此,对这个变量进行的任何改变都会影响用作参数的变量值。为此,只需要使用ref关键字指定参数。
用ref参数的变量的限制:
1.函数可能会改变引用参数的值,所以必须在函数调用中使用“非常量”变量;
2.必须使用初始化过的变量。
除了按引用传递值外,还可以使用out关键字,指定所给的参数是一个输出参数。out关键字的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符)。
区别:
1.把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数;
2.另外,在函数使用out参数时,必须把它看成尚未赋值。
其作用域以这种方式覆盖一个函数的变量称为局部变量。还有一种变量,其作用域可覆盖多个函数。
在控制台应用程序中,必须使用static或const关键字来定义这种形式的全局变量。如果要修改全局变量的值,就需要使用static,因为const禁止修改变量的值。
二、变量的作用域
变量的作用域包含定义它们的代码块和直接嵌套在其中的代码块。
三、Main()函数
Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。
四、结构函数
除了数据,结构还可以包含函数。
五、函数的重载
需要有不同的函数来操作不同类型的变量。函数重载允许创建多个同名函数,每个函数可使用不同的参数类型。
六、委托
委托(delegate)是一种存储函数引用的类型。委托的声明指定了一个返回类型和一个参数列表。