首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#动态类型化语言

问C#动态类型化语言
EN

Stack Overflow用户
提问于 2009-02-19 17:31:41
回答 4查看 1.7K关注 0票数 7

使用.NET 3.5中的新特性(如var、Lambda、linq等),以及更多的特性,我们可以得出结论: C#不仅是静态类型语言,而且动态类型?

为什么或者为什么不?

Edit#1

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

每次发布时,csharp都会从不同的语言中获取一些东西。就.Net1.1而言,我们的祖先甚至不打算把它变成功能性语言.

Edit#2

我想你们中的许多人误解了这个问题;因为我指的是C#语言,包括即将发布的4.0。因此,公平地说,语言是动态输入的.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-19 17:32:47

C#不是动态类型的--在您提到的示例中,所有类型都是静态推断的。下一个版本的C#将包括一些动态特性,但用于使用COM和真正的动态语言。

编辑#1是的,C#的新动态特性会慢一些,因为所有使用它的东西都需要后期绑定。但是,如果使用它,它只会减慢应用程序的速度--这并不是对核心语言本身的更改。C#4将是一种静态类型语言,能够处理后期绑定类型。

编辑#2 No C# 4将不是一种动态类型的语言。C# 4引入了一种新的dynamic类型,它将取代对类型成员的后期绑定,而不是静态类型检查。动态功能只适用于这些动态类型。C#的底层类型系统没有改变。

票数 13
EN

Stack Overflow用户

发布于 2009-02-19 17:32:58

不,它仍然是静态类型的,var/lambda/linq都使用编译器推断,所以在编译时知道类型,动态/鸭子类型将随c# 4.0一起出现。

票数 2
EN

Stack Overflow用户

发布于 2009-02-19 17:34:16

动态输入?!不是的。从技术上讲,C#是一种静态类型化语言。它通过.NET运行时提供的CLR反射服务具有动态方法分派功能(从1.0版本就可以使用,与.NET 3.5特性无关,C# 3.0特性仍然是静态类型的)。C# 4.0将具有真正的动态类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/566327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档