2010-11-03 88 views
5

我想知道你在哪里画出了编程语言功能和平台功能之间的界限。例如,Linq是C#语言功能还是.NET功能。编程语言是否像平台的规范一样工作?语言功能vs框架功能

回答

4

这是一个艰难的行画,和LINQ是一个很好的例子:

+0

你确定吗?隐式类型和扩展方法是语言结构,它们在编译时转换为普通类型和常规静态方法调用。但Linq中使用的具体扩展方法确实是平台功能。 – Gorpik 2010-11-03 10:53:56

+0

@Gorpik,你说得对。答案已更新。 – 2010-11-03 10:58:36

+0

扩展方法也需要在C#中实现。 – Dykam 2010-11-03 11:13:20

3

LINQ是.NET特性,因为它可以从所有CLS兼容语言访问。 yield语句是C#语言功能。

0

LINQ是框架的一个组成部分:

为了使用Linq你必须添加“Linq的”命名空间。你可以不要说是一个延迟语言的FileStream。

1

嗯,有趣的问题。 .NET实际上更像是一个图书馆,但是它完全整合到了语言中,为了使用该语言的许多功能,你需要包含它。所以我想这个决定性因素是你是否必须包含.NET才能使该功能存在。在Linq的情况下,你必须包含.NET,所以我认为它只是一个.NET特性而不是语言特性。

7

我相信在你的例子中,答案就是两者。

启用Linq的扩展方法是平台.Net的一项功能。但是,被转换为对这些扩展方法的调用的语言结构是C#语言的一个特性。您可以使用VB中的相同扩展方法,但不能使用相同的语言结构。

以同样的方式,您可以使用两种语言的Linq to XML,但只有VB具有XML文字。

+0

同意。 * dynamic *关键字也是一个例子。或更大:IL是一个平台功能。 – 2010-11-03 12:04:20