使用.NET 3.5中的新特性(如var、Lambda、linq等),以及更多的特性,我们可以得出结论: C#不仅是静态类型语言,而且动态类型?
为什么或者为什么不?
Edit#1
正如下面许多海报所宣称的那样,.net 4.0将为语言添加动态类型。这样会减缓语言吗?
每次发布时,csharp都会从不同的语言中获取一些东西。就.Net1.1而言,我们的祖先甚至不打算把它变成功能性语言.
Edit#2
我想你们中的许多人误解了这个问题;因为我指的是C#语言,包括即将发布的4.0。因此,公平地说,语言是动态输入的.
发布于 2009-02-19 17:32:47
C#不是动态类型的--在您提到的示例中,所有类型都是静态推断的。下一个版本的C#将包括一些动态特性,但用于使用COM和真正的动态语言。
编辑#1是的,C#的新动态特性会慢一些,因为所有使用它的东西都需要后期绑定。但是,如果使用它,它只会减慢应用程序的速度--这并不是对核心语言本身的更改。C#4将是一种静态类型语言,能够处理后期绑定类型。
编辑#2 No C# 4将不是一种动态类型的语言。C# 4引入了一种新的dynamic类型,它将取代对类型成员的后期绑定,而不是静态类型检查。动态功能只适用于这些动态类型。C#的底层类型系统没有改变。
发布于 2009-02-19 17:32:58
不,它仍然是静态类型的,var/lambda/linq都使用编译器推断,所以在编译时知道类型,动态/鸭子类型将随c# 4.0一起出现。
发布于 2009-02-19 17:34:16
动态输入?!不是的。从技术上讲,C#是一种静态类型化语言。它通过.NET运行时提供的CLR反射服务具有动态方法分派功能(从1.0版本就可以使用,与.NET 3.5特性无关,C# 3.0特性仍然是静态类型的)。C# 4.0将具有真正的动态类型。
https://stackoverflow.com/questions/566327
复制相似问题