语言特性与框架特性

5

我想知道在编程语言特性和平台特性之间如何划分界限。

例如,Linq是C#语言特性还是.NET特性?编程语言是否像平台规范一样工作?

6个回答

7

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

使Linq能够使用的扩展方法是 .Net 平台的一个特性。然而,被转换成对这些扩展方法调用的语言结构是 C# 语言的一个特性。你可以从VB中使用相同的扩展方法,但你不能使用相同的语言结构。

同样地,你可以从两种语言中使用Linq to XML,但只有VB具有XML字面量。


同意。动态关键字也是一个例子。或者更大的:IL是一个平台特性。 - Hans Passant

4

这是一个难以划定的界限,而LINQ是一个很好的例子:


你确定吗?隐式类型和扩展方法是语言结构,在编译时会转换为普通类型和普通静态方法调用。但是 Linq 中使用的特定扩展方法确实是平台功能。 - Gorpik
扩展方法在C#中也需要被实现。 - Dykam

3

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


2

Linq自3.5版本起成为.Net Framework的一部分。

你可以在这里找到C#规范。


1
嗯,这是一个有趣的问题。 .NET 真的更像一个库,然而它完全集成到语言中,为了使用语言的许多功能,你需要包含它。因此,我想定义因素是是否必须包含 .NET 才能存在该功能。在 Linq 的情况下,您必须包含 .NET,所以我认为它只是 .NET 功能,而不是语言功能。

0

LINQ是框架的一个组件:

为了使用LINQ,您必须添加“Linq”命名空间。您不能说FileStream是一种语言扩展。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接