建议107:区分静态类和单例

有一种观点认为:静态类可以作为单件模式的一种实现方式。事实上,这是不妥当的。按照传统的观点来看,单例是一个实例对象。而静态类并不满足这一点。静态类也直接违反面向对象三大特性的两项:继承和多态。

无法让一个静态类从其它类型继承的实例如下:

    interface ISample
{ } static class SampleClass:ISample
{ }

上面代码编译直接通不过。同时,已不能让静态类作为参数和返回值进行传递,如下所示:

        static void SampleMethod(SampleClass sample)
{
}

这个方法也会导致编译问题。

从本质上讲,在C#中,静态类不会被认为是一个“真正的对象”。而单例,则不会存在这样的问题。单例,它是一个实例对象,仅仅因为特殊的要求,它被自己实现为在整个系统中只有一个对象。

转自:《编写高质量代码改善C#程序的157个建议》陆敏技

最新文章

  1. 04.SQLServer性能优化之---读写分离&数据同步
  2. .NET 对象生命周期
  3. Sender
  4. 基于对话框的MFC应用程序基本结构
  5. Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)
  6. nginx 2.基本配置
  7. css3实现手机菜单展开收起动画
  8. rhApp遇到的项目问题
  9. digest-MD5认证
  10. angularjs学习笔记之一
  11. Day20 Ajax
  12. 聊聊大学期间的我是怎样学习Linux系统的
  13. [Hive_add_3] Hive 进行简单数据处理
  14. unity 改变鼠标样式的两种方法
  15. Spring-Boot之Redis基础
  16. Vue笔记:VS Code 常用快捷键
  17. python -- numpy 基本数据类型,算术运算,组合,分割 函数
  18. 使用ABP框架踩过的坑系列5
  19. arcgis 10.1 导入数据到oracle 发布地图服务
  20. 让控制台支持 ANSI 转义序列,输出下划线、修改颜色或其他控制

热门文章

  1. 将服务器上的SqlServer数据库备份到本地
  2. mysql连接慢,修改配置文件
  3. 关于setTimeout的一个逻辑题
  4. Tkinter画布-Canvas
  5. System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") 显示24小时制;System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")显示12小时制
  6. Please specify exact device preset UUID
  7. Mysql Windows 7 异常关闭, 2003 - Can't connect to Mysql server on 'localhost' (10061) "Unknown error")
  8. pip / conda 导出和安装环境组件 requirements.txt
  9. cdn path b 问题
  10. AssetBundle依赖