首页 > 解决方案 > 我想知道C#中函数和方法的区别

问题描述

我的问题的示例代码

MessageBox.Show();// is a method and
and private void Example()
{

} //is a function?
is there any real difference or not, please explain

标签: c#functionmethods

解决方案


让我们首先了解function计算机科学意义上的一般定义:

函数是完成特定任务的“自包含”代码模块。函数通常“接收”数据、处理数据并“返回”结果。一旦编写了一个函数,就可以一遍又一遍地使用它。可以从其他函数内部“调用”函数。

或其他定义:

在编程中,执行特定任务的程序的命名部分称为函数。从这个意义上说,函数是一种过程或例程。一些编程语言对返回值的函数和执行某些操作但不返回值的过程进行了区分。

根据这些定义,几乎每个可以在调用时执行可重复任务的命名代码块都是一个函数,尽管某些语言会让该代码返回一个值。

但是,根据 ECMA 规范,在 C# 中,函数这个词很少使用(比较而言),并且可以表示非常具体的东西(取决于上下文)或定义大量语言特征。

来自 ECMA C# 规范的值得注意的提及

  1. 匿名函数

匿名方法表达式或 lambda 表达式被归类为匿名函数

  1. 函数成员

函数成员是包含可执行语句的成员。函数成员始终是类型的成员,不能是命名空间的成员。C# 定义了以下类别的函数成员:

  • 方法
  • 特性
  • 活动
  • 索引器
  • 用户定义的运算符
  • 实例构造函数
  • 静态构造函数
  • 终结者
  1. 异步函数

带有 async 修饰符的方法(第 15.6 节)或匿名函数(第 12.16 节)称为异步函数。通常,术语 async 用于描述具有 async 修饰符的任何类型的函数。异步函数的形式参数列表指定任何 ref 或 out 参数是编译时错误。

  1. 局部函数

从 C# 7.0 开始,C# 支持本地函数。局部函数是嵌套在另一个成员中的一种类型的私有方法。它们只能从它们的包含成员中调用。

简而言之,在 C# 中试图确定一个函数是什么,什么不是,充其量是有问题的(你应该担心其他事情)。大多数时候,方法函数的术语可以互换使用,但是它也可以用来描述一个非常具体的命名语言特征(如上所示)。

人们可以永远争论历史定义或引用规范来证明这一点。然而,你应该关心的(在这个级别上)是你认为的大多数方法或函数实际上都是两者(除了少数例外)。


推荐阅读