gpt4 book ai didi

c# - C# 和 Javascript 中函数的区别?

转载 作者:数据小太阳 更新时间:2023-10-29 05:52:57 25 4
gpt4 key购买 nike

我正在学习 Javascript,我读过函数是一等对象,大多数作者都提到函数可以返回函数(对象)并将它们作为参数传递给其他函数。

我相信它还有很多,那么 C# 中的函数和 javascript 中的函数有什么区别?

在 C# 中,我说函数不是对象(没有方法、属性等)是否正确,即使使用闭包(使用 lambda 表达式和委托(delegate))它们看起来像 javascript 中的函数对象?

我觉得对于刚接触该语言的人来说,在 C# 中使用 lambda 表达式的区别变得有点模糊。

最佳答案

大多数作者所说的是 javascript 中的“函数是 first class 公民”。它们不是 C# 中的第一类,因为它们只是方法,附加到一个类。方法委托(delegate)(和 lambda)是特定的类,目的是使方法一等公民。

事情就是这样,正如我所能解释的那样,没有告诉你回去阅读 Crockford 的“Javascript: The Good Parts”以及像 Skeet 或其他人写的东西:

Javascript 的部分比 C# 少很多。不要将您在 C# 中可以做的事情直接与您在 Javascript 中可以(或不能)做的事情进行比较(反之亦然)。

那么为什么不是所有的语言(或者至少是 C#)都有“一流的功能”?答案通常是最简单的:因为那不是语言设计要求。然而,这对我来说有点逃避,因为显然他们现在已经添加了它。但是,如果没有人告诉您将其包含在您 future 的语言中,您会吗?

所以要记住的关键是:在 C# 中,函数(方法)必须附加到类。在 Javascript 中他们没有。原因在语言定义(规范)中。

另外,我应该在后面加上一个关于对象创建的声明:

您可以通过以下两种方式之一在 javascript 中创建一个新对象:

//using object syntax
var ob1 = { name: value, nestedFunction: function(){} };

//using a function
function MyFunc(){
var name = value;
function nestedFunction(){}
}
var ob2 = new MyFunc();

在第二种情况下,我们使用函数来声明对象,在第一种情况下,我们只是使用文字语法来声明它。

要在 C# 中做同样的事情,我们必须创建一个新对象作为类:

MyClass ob1 = new MyClass(); //constructor is a member function of the class
public class MyClass {
public MyClass() {
}
public void nestedFunction(){
}
}

请注意,在 Javascript 中我仍然必须定义要返回的方法。

好的,我想今晚就够了。

关于c# - C# 和 Javascript 中函数的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com