C#.NET框架的哪些部分实际上是语言的一部分?

Gle*_*eno 13 c#

我想知道哪些部分System是语言功能(核心组件),哪些部分只是有用的填充物,但并非绝对必要.我可能会对这里的措辞不满意,所以让我举一个例子说明我的意思.

考虑System.Console上课它显然是用于特定事物的东西.从本质上讲,这个东西可以很好地运行Windows /当前操作系统的功能.这不是我所说的语言的核心组成部分.

另一方面,采取System.IDisposable界面.那件事显然非常重要,因为没有它,这using()句话就没用了.类需要实现此特定接口才能启动语言功能.

我可以假设这mscorlib是负责任的一方.快速浏览一下Object explorer,可以看出它确实包含了许多我认为是核心的组件,同时它将Console类放入System命名空间,这只是填充程序.

将填充和特定于语言的对象放入同一命名空间的概念等同于它们,但为了更深入地理解C#,我想知道哪个是哪个.所以,我正在寻找C#的核心组件列表.我假设某个地方有一个方便的参考,但由于我在谷歌讲座期间睡着了,我无法形成正确的查询来找到它.

提前致谢.

很久以后编辑我读了这篇 Lippert博客文章,它有点相关.有趣的是,foreach构造实际上并不需要IEnumerable接口来实现功能.

Jon*_*eet 12

有没有非常多的C#实际需要的类型.我能想到的最好的东西,并快速检查规格:

  • System.Object的
  • System.Enum
  • System.ValueType
  • 原始类型:System.{Int16,Int32,Int64,UInt16,UInt32,UInt64,Byte,SByte,Double,Single,Char,Boolean}
  • System.String
  • System.Decimal
  • System.Nullable <T>
  • 的System.Array
  • System.Exception(以及各种子类 - 请参阅规范的第16.4节)
  • System.Delegate(可能还有System.MulticastDelegate)
  • System.IDisposable的
  • System.Attribute(以及一些特定属性,例如ConditionalAttribute和ObsoleteAttribute)
  • 系统类型
  • System.Collections.IEnumerable/IEnumerator
  • System.Collections.Generic.IEnumerable <T>/IEnumerator <T>
  • System.Collections.Generic.IList <T>
  • System.Threading.Monitor
  • System.Threading.Interlocked
  • System.Linq.Expressions.Expression <T>
  • C#5的任务和任务<T>
  • System.GC(在规范中提到,但未被编译器AFAIK明确使用)

现在任何目标框架都需要比实现过程更多的类型- 比如MethodInfo评论中提到的东西,可能是用于装饰参数的属性(以及用于动态类型的一大堆其他类型).但是不同的目标系统可能有不同的实现 - 在编写真正的可移植C#时,你不能依赖它们.

  • @Eamon因为Linq只使用方法名称,所以不需要对`IEnumerable` /`IQueryable`进行特殊处理."IEnumerable"当然会受到其他语言特性(迭代器)的特殊处理,但我不认为`IQueryable`可以. (2认同)