函数定义有以下几部分组成
示例:
static void Write() { Console.WriteLine("Text output from function,"); }
函数的定义有以下及部分组成:
- 两个关键字:static 和 void
- 函数名后跟圆括号,如 Write()
- 一个要执行的代码块,放在花括号中
*函数名命名法包括:骆驼命名法(camelCase)和帕斯卡命名法(PascalCase)。一般采用PascalCase形式编写函数名。
static与面向对象的概念有关,void表明函数没有返回值
引用参数和值参数
static void ShowDouble(int val) { val*=2; Console.WriteLine("val doubled = {0}", val); } //参数val在这个函数中被加倍,按下列方式调用它: int myNumber = 5; Console.WriteLine("myNumber = {0}", myNumber); ShowDouble(myNumber); Console.WriteLine("myNumber = {0}", myNumber);
OutPut:
myNumber = 5
val doubled = 10
myNumber = 5
上面的方法本没有什么错误,但如果要改变myNumber的值,可以使用一个为myNumber返回新值得函数:
static int DoubleNum(int val) { val*=2; return val; }
但这段代码一点也不直观,且不能改变用作参数的多个变量值(因为函数只有一个返回值)
此时可以通过“引用”传递参数。及函数处理的变量与函数调用中使用的变量相同,而不仅仅是值相同的变量。为此只需使用ref关键字:
static void ShowDouble(ref int val) { val *= 2; Console.WriteLine("val doubled = {0}",val); }
*使用ref参数的变量有限个限制:
- 函数可能会改变引用参数的值,所以必须在函数调用中使用“非常量”变量(const)
- 必须使用初始化过的变量
输出参数(out)
除了按引用传递值外,还可以使用out关键字,指定所给的参数是一个输出参数。out关键字的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符),实际上,它的执行方式与引用参数完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。但是,二者存在一些重要区别:
- 把未赋值的变量用作ref参数是非法的,但可以吧未赋值的变量用作out参数
- 另外,在函数使用out参数时,必须把它看成是尚未赋值