[C#基础知识]函数

函数定义有以下几部分组成

示例:

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参数时,必须把它看成是尚未赋值
原文地址:https://www.cnblogs.com/Jian-Zhang/p/6109931.html