使用.NET 3.5中的新功能(例如var,Lambda,linq等)以及其他方法,我们可以得出结论,C#不仅是静态类型语言,还有动态类型?
为什么或者为什么不?
编辑#1
正如以下许多海报所声称的那样,.net 4.0将为该语言添加动态类型.这会减慢语言吗?
每个版本csharp都需要使用不同语言的东西.就.Net1.1而言,我们的祖先甚至不打算将其作为功能语言......
编辑#2
我想很多人都误解了这个问题; 因为我指的是整体的C#语言,包括即将推出的4.0版本.因此,可以说语言是动态输入的......
C#不是动态类型的 - 在您提到的示例中,所有类型都是静态推断的.在接下来的C#版本将包括一些动态特征与COM和真正的动态语言的工作虽然.
[编辑#1]是的,C#的新动态功能将会变慢,因为使用它的一切都需要后期绑定.但是,如果您使用它,它只会减慢您的应用程序速度 - 它不是对核心语言本身的改变.C#4将是一种静态类型语言,具有使用后期绑定类型的能力.
[编辑#2]否C#4不是动态类型语言.C#4引入了一种新dynamic
类型,它将替代类型成员的后期绑定,而不是静态类型检查.动态功能仅适用于这些动态类型.C#的底层类型系统没有改变.