本章内容

  • 如何定义和使用不接受任何数据也不返回任何数据的简单函数

  • 如何在函数中传入数据

  • 使用变量作用域

  • 如何结合使用 Main() 函数和命令行参数

  • 如何把函数提供为结构类型的成员

  • 如何使用函数的重载

  • 如何使用委托

  我们迄今看到的代码都是以单个代码块的形式出现的,其中包含一些重复执行的循环代码,以及有条件地执行的分支语句。如果要对数据执行某种操作,就应把所需要的代码放在合适的地方。

  这种代码结构的作用是有限的。某些任务常需要在一个程序中执行好几次,例如,查找数组中的最大值。此时可以把相同(或几乎相同)的代码块按照需要放在应用程序中,但这样做存在一个问题。在某个常见任务中,即使进行非常小的改动(例如,修改某个代码错误),也需要修改多个代码块,而这些代码块可能分布在整个应用程序中。如果忘了修改其中一个代码块,就会产生很大的影响,导致整个应用程序失败。另外,应用程序也较长。

  解决这个问题的方法是使用函数。在C#中,函数可提供在应用程序中的任何一处执行的代码块。

  本章介绍的特定类型的函数称为“方法”。但是,这个术语在 .NET 编程中有非常特殊的含义,本书后面会详细讨论它,所以现在不使用这个术语。

  例如,有一个函数返回数组中的最大值,可以在代码的任何位置使用这个函数,且在每个地方都使用相同的代码行。因为只需要提供一次这段代码,所以对代码的任何修改将影响使用该函数进行的计算。这个函数可以看作包含可重用的代码

  函数还可以提高代码的可读性,因为可以使用函数将相关代码组合在一起。这样,应用程序主体就会非常短,因为代码的内部工作被分散了。这类似于在 IDE 中使用大纲视图将代码区域折叠在一起,应用程序的结构更加合理。

  函数还可以用于创建多用途的代码,让它们对不同的数据执行相同的操作。可以采用参数形式为函数提供信息,以返回值的形式得到函数的结构。在上面的示例中,参数就是一个要搜索的数组,而返回值就是数组中的最大值。这意味着每次可以使用同一个函数处理不同的数组。函数的定义包括函数名、返回类型以及一个参数列表,这个参数列表指定了该函数需要的参数的数量和类型。函数的名称和参数(不是返回类型)共同定义了函数的签名