2010-11-03 106 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