我在Google上搜索方法和功能之间的区别,我得到了两个答案。
方法是非返回类型,如下所示
void Method()
{
}
其中Function是一个返回类型,如下所示
int Method()
{
}
这两个词没有区别。
查询 - 哪个是正确的还是有第三件事?
答案 0 :(得分:5)
没有区别。
在c#和java中,通常称它们为方法。在javascript和c ++中,它们通常被称为函数
无论哪种方式,人们都会知道你的意思
答案1,如果我是一个全新的程序员,并且我被要求推测差异,那么答案1可能就是我想出的。将函数的数学定义作为输入确定输出的过程
答案 1 :(得分:2)
我认为你真正要问的是C#中函数和动作(两者都是方法)之间的区别是什么。
差异与如何处理空白有关:这很好地解释了https://softwareengineering.stackexchange.com/questions/131036/why-is-void-not-allowed-as-a-generic-type-in-c
我将完整发布Eric Lippert的答案以节省点击次数:
“void”的根本问题在于它与任何其他返回类型的含义并不相同。 “无效”是指“如果这种方法 返回然后它根本不返回任何值。“不为null; null是一个值。 它不会返回任何值。
这真的搞砸了类型系统。类型系统本质上是一个 系统,用于对哪些操作有效进行逻辑推断 关于特定的价值; void返回方法不返回值, 所以问题是“什么操作对这件事有效?”不要做 任何意义上的。对于进行操作没有“事情”, 有效或无效。
此外,这会让运行时变得更加激烈。互联网 runtine是虚拟执行系统的一个实现,它是 指定为堆栈计算机。也就是说,虚拟机所在的地方 操作的特点是它们对a的影响 评估堆栈。 (当然在实践中机器将是 在具有堆栈和寄存器的机器上实现,但是 虚拟执行系统只是一个堆栈。)一个调用的影响 void方法与调用的效果根本不同 非虚方法;一个非虚方法总是把东西放在上面 堆栈,可能需要弹出。 void方法永远不会放 堆栈上的东西。因此编译器无法处理void 和方法返回时的非void方法相同 价值被忽略;如果方法无效,则没有返回值 所以一定没有流行音乐。
由于所有这些原因,“void”不是可以实例化的类型; 它没有价值,这就是它的重点。它不能兑换成 对象和void返回方法永远不会被处理 多态地使用非void返回方法,因为这样做 腐蚀堆栈!
因此,void不能用作类型参数,这是一种耻辱,就像你一样 注意。这将非常方便。
事后看来,对所有人来说都会更好 如果不是一无所有,那就是一个无效的方法 自动返回“Unit”,一个神奇的单例引用类型。您 然后会知道每个方法调用都会把东西放在堆栈上, 你会知道每个方法调用都会返回一些可能的东西 分配给对象类型的变量,当然也可以是Unit 用作类型参数,因此不需要单独使用 Action和Func委托类型。可悲的是,那不是我们所处的世界。
有关这方面的更多想法,请参阅
http://blogs.msdn.com/b/ericlippert/archive/2009/06/29/the-void-is-invariant.aspx
和
http://blogs.msdn.com/b/ericlippert/archive/2011/02/21/never-say-never-part-one.aspx
和
http://blogs.msdn.com/b/ericlippert/archive/2011/11/28/why-have-a-stack.aspx
答案 2 :(得分:1)
这两个词没有区别。它们的含义可以互换。
我发现在处理非托管代码(C / C ++)时,人们会将它们称为函数。但是在处理托管代码(C#/ java)时,人们会将它们称为方法。
答案 3 :(得分:1)
这实际上取决于一个术语。第一个答案没有错,但有些人不会认为它100%正确,单词function
的使用可能倾向于从方法中返回。
所以在底层方法中你可以这样做:
void DoSomething()
{
int i = Sum(1, 2);
}
然后有一个return方法,可以确定为函数:
int Method(int i, int j)
{
return i + j;
}
所以回答你的问题,两者都不正确。这是你解释它们的方式,因为许多开发人员往往会改变他们所说的内容。但是,VB.Net对方法使用Sub
和Function
,所以如果你来自VB.Net
背景,你可以将返回方法称为函数。
答案 4 :(得分:1)
在.NET中,术语几乎是同义词,但在JavaScript等语言中,它们的含义可能略有不同。 (js术语)示例将是方法通常是包含函数的对象属性。
您在这里也可能表示作为函数的差异是独立的功能单元,而方法被定义为类的成员。在。 NET,你通常会听到术语'方法'使用频率超过'功能' (但他们确实有,恰当地命名,'匿名函数')。
此处还有一个关于function and method differences的问题,您可能需要查看其他详细信息。
答案 5 :(得分:0)
这两个词没有区别。
答案 6 :(得分:0)
一直认为这是答案1,我无耻地使用它,偶尔也可以互换地使用它们。
答案 7 :(得分:0)