使用.NET 3.5中的新功能(例如var,Lambda,linq等)以及更多功能,我们可以得出结论,C#不仅是静态类型语言,还有动态类型 ?
为什么或为什么不呢?
修改#1
正如以下许多海报所声称的那样,.net 4.0将为该语言添加动态类型。这会减慢语言吗?
每个版本csharp都会使用不同语言的东西。就.Net1.1而言,我们的祖先甚至不打算将其作为功能语言......
修改#2
我想很多人误解了这个问题;因为我指的是整体的C#语言,包括即将推出的4.0版本。因此,可以说语言是动态输入的......
答案 0 :(得分:12)
C#不是动态类型的 - 在您提到的示例中,所有类型都是静态推断的。 C#的 next 版本将包含一些动态功能,但是可以使用COM和真正的动态语言。
[编辑#1]是的,C#的新动态功能将会变慢,因为使用它的一切都需要后期绑定。但是,如果您使用它,它只会减慢您的应用程序速度 - 它不是对核心语言本身的改变。 C#4将是一种静态类型语言,具有处理后期类型的能力。
[编辑#2]否C#4不是动态类型语言。 C#4引入了一种新的dynamic
类型,它将替代类型成员的后期绑定,而不是静态类型检查。动态功能仅适用于这些动态类型。 C#的底层类型系统没有改变。
答案 1 :(得分:2)
不,它仍然是静态类型的,var / lambda / linq都使用了编译器的感染因此类型在编译时是已知的,动态/鸭子类型将随c#4.0一起提供
答案 2 :(得分:1)
动态输入?!不。从技术上讲,C#是一种静态类型语言。它具有动态方法调度功能,通过.NET运行时提供的CLR反射服务(从v1.0开始提供,与.NET 3.5功能无关,C#3.0功能仍然是静态类型)。 C#4.0将具有真正的动态类型。
答案 3 :(得分:0)
评论者:您 确定动态类型可以如此轻松地包含在内吗?我感觉他们的影响会扩散。