我一直认为.NET中的根命名空间“System
”主要用于那些不太依赖特定平台的东西。
我想知道是否有人对Windows.Forms
命名空间为System
而不是Microsoft
的原因有任何想法或见解,因为它似乎在一个平台上相当根深蒂固。
(如果可能,请不要进行火焰战争或不必要的MS抨击!:)
答案 0 :(得分:13)
我在某处读到System.*
命名空间用于核心.Net框架的一部分,而Microsoft.*
命名空间用于额外的“增值”可选附加内容,或者是在发展中。
修改
Brad Abrams在他的博文What Does that .NET Namespace Mean: System.* and Microsoft.*
中对此进行了讨论此外,来自 Visual Basic 2005 with .NET 3.0 Programmer's Reference 的引用:
Microsoft根命名空间包含特定于Microsoft的项目。理论上,任何供应商都可以实现转换为中间语言(IL)代码的.Net语言。如果要构建此类语言,Microsoft命名空间中的项通常不适用于您的语言。 System命名空间中的项目对于您的语言用户和使用Microsoft语言的程序员一样有用,但Microsoft命名空间中的项目可能没那么有用。
这意味着如果我要创建一个新的.Net语言,我将能够使用System.Windows.Forms
命名空间来创建UI,但我可能没有太多用于{{{ 1}}名称空间。
答案 1 :(得分:1)
我的猜测是:
微软设想.NET框架具有多平台的能力,但它们只是为Windows平台提供运行时环境。他们可能认为任何为另一个平台提供运行时环境的人都会以可以使用System.Forms的方式实现它。运行时将处理本机实现之间的差异。
答案 2 :(得分:0)
仅仅因为“微软Windows”已被删除为“Windows”并不意味着“窗口”概念并不比微软更广泛。自从最初的IBM PARC界面通过Microsoft Windows,X11等以来所有GUI的实现都涉及Windows和Form控件,这只是微软称其特定的“Windows”。因此,System.Windows.Forms似乎是正确的,因为窗口不必是“Windows”的一部分。可能它应该只是一个小案例w的窗户。但这会破坏名称空间的命名约定。