gpt4 book ai didi

C#的LINQ和.NET Framework,哪个依赖?

转载 作者:行者123 更新时间:2023-11-30 18:57:07 25 4
gpt4 key购买 nike

我认为 C# 语言编译器是一个独立的黑盒子,能够理解特定语法的文本并生成编译代码。另一方面,.NET 框架是一个庞大的库,其中包含部分由 C# 和部分由 C++ 编写的功能。所以 .NET 框架依赖于 C# 语言,而不是相反。

但我无法将其纳入 LINQ 的工作方式。 LINQ 查询是 C# 编译器可以理解的特定语法的文本。但是要通过自己的 LINQ 提供程序构建,我需要使用 IQueryable 和 IQueryProvider 等接口(interface),这两个接口(interface)都在框架的 System.Linq 命名空间中定义。

这是否意味着 C# 语言提供的功能依赖于 .NET 框架的一部分? C# 语言了解 .NET 框架吗?

最佳答案

.NET Framework 包含许多部分。其中最重要的一个是 CLR——公共(public)语言运行时。所有 .NET 语言都依赖它,包括 C#,因为它们生成机器处理器无法执行的 IL 代码。相反,CLR 会执行它。

还有基类库 BCL,可用于每种 .NET 语言:C#、VB.NET、托管 C++、F#、IronRuby,应有尽有。我怀疑它是用 C# 编写的。它不依赖于这些语言的任何特性,因为类和 OOP 是在 CLR 中构建的。

所以,是的,C# 语言了解 .NET 框架,它绝对必须了解它。想想 IEnumerable:要将 foreach 编译成 GetEnumerator()MoveNext() 调用,C# 编译器必须知道,好吧,IEnumerable 存在。而且有点特别。

或者想想属性! C# 编译器具有关于 Attribute 接口(interface)提供哪些方法的内在知识。

但是 CLR 本身对 C# 一无所知。完全没有。

关于C#的LINQ和.NET Framework,哪个依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com