1

我觉得这很容易被误解,我总是在两者之间感到困惑。当我们说 CLR 功能(.NET 功能)或 C# 功能时,它们是相同还是不同

编辑:我觉得大多数人都误解了我的问题。我不是在问 C# 和 .NET 之间的核心区别,而是对功能明智的分类有点好奇。就像垃圾收集是 CLR 功能或匿名类型是语言功能,依此类推

4

1 回答 1

7

语言特性、库特性和运行时特性之间值得非常清楚。

一些例子:

  • 空合并??运算符、部分类和 lambda 表达式完全是语言特性
  • 垃圾收集几乎是一个纯粹的运行时特性。语言通过终结器与它交互,但仅此而已
  • 泛型是语言和运行时特性的混合体——尽管值得注意的是,CLR 在 F# 公开它之前就已经显着支持泛型变化。当然,库使用泛型。
  • 可空类型是所有三种类型的混合:CLR 需要了解它们以用于装箱(以及泛型的结构约束),Nullable<T>类型本身在库中定义,C# 语言以各种方式支持它们(例如使用?类型后缀)
于 2013-03-18T09:39:34.533 回答