方法和函数之间的区别是什么?

83

我是一个C#初学者,非常想学习C#,但我很困惑。当我问别人函数和方法之间有什么区别时,他告诉我它们没有区别,它们都具有相同的功能。
现在我很困惑,想知道好的开发人员是什么是方法和函数?

它们是否完全相同? 如果不是,那么如何初始化每个?

这种初始化函数的方式正确吗?

public void UpdateLeaveStatus(EmployeeLeave objUpdateLeaveStatus)
请提供适当的帮助,因为我是新手。

13
函数是面向过程的名称,方法是面向对象的名称。由于C#(和VB.NET)是面向对象的语言,应该使用方法。 - Tim Schmelter
是想说两者是相同的吗? - Ammar Asjad
VB-Side-note: 不要将 VB.NET 中的“Functions”与“functions”混淆,它们也是具有返回值的方法,而“Subs”则不返回任何内容(但它们也是方法)。 - Tim Schmelter
2
嗯,区别在于拼写。就像足球和橄榄球(不是美式橄榄球)之间的区别一样。 - Shakti Prakash Singh
关于你问题的第二部分,你需要帮助的是函数还是方法? - Shakti Prakash Singh
8个回答

81

当一个函数是类的一部分时,它被称为方法。

C# 是一种面向对象编程语言,不允许在类之外声明函数,这就是为什么 C# 中所有的函数实际上都是方法。

尽管存在这种形式上的差异,它们其实是相同的...


58

这两个词是相同的,它们在C#中只是同一事物的不同术语。

方法(Method):

在面向对象编程中,方法是与类相关联的子程序(或过程或函数)。

关于面向对象编程,使用术语“方法”,而不是“函数”。


15
这句引用意味着确实有一个不同之处,而方法是函数的一种特殊情况。请修改你的答案以反映这一点。 - Eliran Malka
7
我不在意具体的实现(C#),我只是想说这个答案自相矛盾。 - Eliran Malka
2
正确 - 如果一个方法是与类相关联的一种函数,那么它们是不同的,因此它们并不相同。只是纯粹的逻辑。 - Eliran Malka
5
@EliranMalka,好的,这个问题被标记在C#中:) 但是它关于术语,每个人都有自己的定义/理解。 - Habib
3
@Habib 在C#中它们不是同一件事。例如,看一下匿名函数和匿名方法。 - igorcadelima
显示剩余6条评论

14
在C#中,它们是可互换的(尽管方法是正确的术语),因为你不能编写一个没有包含在类中的方法。如果它独立于类,那么它将是一个函数。方法是通过指定的类运行的函数。

3

C#中没有函数,只有方法(典型的方法:public void UpdateLeaveStatus(EmployeeLeave objUpdateLeaveStatus)MSDN链接和functor - 类型为Func<>的变量。


7
所有的方法都是函数,但并非所有的函数都是方法。 - Gavin Towey
3
你看了我分享的 MSDN 链接吗?C# 中没有“function”这一术语。 - Kirill Bestemyanov

3

在一些编程语言中,它们被称为函数,而其他语言则称之为方法,事实上它们是同一个东西。它只是代表了一种抽象化的形式来引用数学函数:

f -> f(N:N).

意味着它是一个具有自然数值的函数(仅为示例)。因此,除了名称之外,它完全相同,表示包含指令以解决您目的的代码块。


3

这两个术语是一样的,都是指把一些代码封装成一个可从其他地方调用的工作单元。

从历史上看,"方法"和"函数"之间可能存在微小的差异,其中"方法"不返回值,而"函数"则返回一个值。在C#中,可以将其翻译为:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

但实际上,我再次强调这两个概念没有什么区别。


我一直认为函数是无状态的,而方法是使用/改变函数所关联的对象状态的函数。 - aj.toulan

3

从面向对象编程概念来看:

如果您有一个访问/修改类字段的函数,则它成为了方法。否则,它就是一个函数。

如果您在Java/C++类中继续调用所有函数而不将其称为方法也没有问题。原因是您直接/间接地访问/修改了类属性。那么为什么不将Java/C++类中的所有函数都称为方法呢?


2

来自结构化编程语言背景的程序员称其为函数,而在面向对象编程中则称其为方法。

但是两者之间没有任何区别。

在旧时代,方法不返回值而函数则会。现在它们都可以互换使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接