C#console(静态类澄清)

时间:2010-10-19 07:55:39

标签: c# static console

我希望我理解静态类的概念(感谢Jon Skeet和他对我的另一个问题的回答)。另外,我只是为了解释为什么在MSDN上他们不将Console显示为典型的静态类。或者控制台是这样特殊的东西吗?

3 个答案:

答案 0 :(得分:2)

控制台是一个静态类。 每个应用程序只能有一个控制台。当您在Console类上调用方法时,将使用该单个Console类。任何静态类型或静态成员都是如此。静态 - 任何内容都不能在同一app / app-domain中拥有多个实例。

答案 1 :(得分:0)

如果你问“为什么它不是静态类” - 它是一个静态类:

public static class Console

但是如果你问,为什么不把它用作静态类的一个有用的例子:

  

..为什么在MSDN上他们不会将Console显示为典型的静态类......

MSDN上的基本API文档(包括that for the Console class)侧重于每个功能的机制,以及您可以编写以使用该功能的语法和代码的一个小示例。它描述了每个功能或类提供的功能。它描述了编程契约,包括功能所依赖的命名空间和程序集,成员列表,返回值,预期输入范围,错误处理和继承层次结构中的父类。

本文档并不倾向于关注每个功能如何适应编程体系结构的生态系统或编程最佳实践。它通常不提及替代选项,或通过选择使用该功能进行权衡。实际上,API文档中的许多示例都是错误编程实践的示例,其中一些甚至不编译。

MSDN上还有其他领域涉及架构问题,编程最佳实践以及功能为何对.NET框架有用的示例(例如Safe Handles, and the Dispose pattern)。也许您根本没有找到(或者没有)与静态类,它们的用途以及框架中现有示例相关的文章?

解决这个缺点,听起来这可能是一篇有用的文章,特别是如果它深入研究使用静态类编程时很容易陷入的不良实践(强耦合,难以测试它们,以及难以实现并发)。

答案 2 :(得分:0)

System.Console最初未声明为static,因为它自.NET 1.1以来一直存在,它不支持静态类,只支持静态成员。