C#动态类型语言

时间:2009-02-19 17:31:41

标签: c# .net programming-languages

使用.NET 3.5中的新功能(例如var,Lambda,linq等)以及更多功能,我们可以得出结论,C#不仅是静态类型语言,还有动态类型

为什么或为什么不呢?

修改#1

正如以下许多海报所声称的那样,.net 4.0将为该语言添加动态类型。这会减慢语言吗?

每个版本csharp都会使用不同语言的东西。就.Net1.1而言,我们的祖先甚至不打算将其作为功能语言......

修改#2

我想很多人误解了这个问题;因为我指的是整体的C#语言,包括即将推出的4.0版本。因此,可以说语言是动态输入的......

4 个答案:

答案 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)

评论者:您 确定动态类型可以如此轻松地包含在内吗?我感觉他们的影响会扩散。