我想知道System
的哪些部分是语言功能(核心组件),哪些部分只是有用的填充,但并非绝对必要。我可能会对这里的措辞不满意,所以让我用一个例子来说明我的意思。
考虑System.Console
类,它显然是用于特定事物的东西。从本质上讲,这个东西可以很好地运行Windows /当前操作系统的功能。这不是我所说的语言的核心组成部分。
另一方面,请使用System.IDisposable
界面。那个东西显然非常重要,因为没有它,using()
语句就没用了。类需要实现此特定接口才能启动语言功能。
我可以假设mscorlib
是这里的责任方。快速浏览一下对象资源管理器,可以看出它确实包含了许多我认为是核心的组件,同时它将Console
类放入了System命名空间,这只是填充。
将填充符和特定于语言的对象放入同一命名空间的概念等同于它们,但为了更深入地理解C#,我想知道哪个是哪个。所以,我正在寻找C#的核心组件列表。我假设某个地方有一个方便的参考,但由于我在谷歌讲座期间睡着了,我无法形成正确的查询来找到它。
提前致谢。
很久以后编辑我读了this Lippert博客帖子,它有点相关。有趣的是,foreach
构造实际上并不需要IEnumerable
接口来运行。
答案 0 :(得分:12)
C#实际上不需要非常多种类型。我可以想到这一点,并快速检查规格:
现在任何目标框架都需要比实现更多的类型 - 比如评论中提到的MethodInfo
之类的东西,可能是属性来装饰参数(和整个束其他类型的动态类型)。但是不同的目标系统可能有不同的实现 - 在编写真正的可移植C#时,你不能依赖它们。
答案 1 :(得分:1)
也许寻找那种语言“核心”的类型是错误的起点。
任何.NET应用程序都由CLR运行,因此更重要的视角是“CLR的基本部分/类是什么”。
这也非常适合理解C#。
答案 2 :(得分:1)
Expression
类(不仅仅是Expression<T>
),因为C#可以将lambda转换为表达式IEnumerator
,IEnumerator<T>
和foreach
使用的yield
- 迭代器dynamic
,params
,out
和扩展方法System.Type