前一阵子项目中,一直在用静态方法,或者是静态变量,就从网上查了一些资料做了小小的一个梳理与总结,便用加深理解。

那什么是静态方法呢?最直观上静态方法采用了使用了static 修饰符。静态方法作为一种特殊的成员方法,它可以看作为是属于类本身的一种方法,而不属于类的某一个具体的实例。所以对静态方法不需要类的实例化就可以使用了,使用时格式一般而是采用类名.静态方法。

[csharp] view plaincopy
  1. class A { public static void b() {..............} }
  2. A.b(); //不用实例化,直接使用

由于静态方法的特殊性,什么情况下我们使用静态方法呢?在程序中如何可以利用静态字段或者静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,这时静态方法效率要稍微高一些,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。

静态和非静态的方法在写入内存方面又有什么区别呢?不同与非静态方法需要多个内存,静态方法创建后,使用的一直是同一块内存,这样,静态方法的效率是相对高一些的,但是,静态方法是无法进行自行销毁。而不管这些方法、属性以后有没有用到,即使是没有人再访问程序,这部分内存仍然不会释放。还有就是,所有访问者看到的静态属性的数据几乎都是一样的,比如A用户设置了UserName这个属性,B用户访问的时候,得到的UserName仍然是A用户设置的那个。这种特性,如果用在固定数据中,那不会有太大问题,比如连接字符串之类的。

静态方法又有什么缺陷呢?当说到缺点时,我个人认识,就是在面向对象编程方面的欠缺,静态方法是不支持使用抽象或虚的方法进行扩展和多态的,这样,很大的限制了软件的灵活性,所以在使用的时候,还是要慎重,如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。当然你完全可以把所有的实例方法都写成静态的,将实例作为参数传入即可,一般情况下可能不会出什么问题。从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象反之使用静态方法。这只是从面向对象角度上来说的。如果从线程安全、性能、兼容性上来看也是选用实例化方法为宜。

C#静态方法的使用情况的一些相关内容就向你介绍到这里,希望对你学习和使用C#静态方法有所帮助。

c# static那些事相关推荐

  1. pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...

  2. C++的基础知识【面试遇到】

    文章目录 1. 多态 1.1 多态的分类 1.2 动态多态满足的条件及使用 1.3 动态多态:虚函数 1. 虚函数: 2. 虚析构函数: 3. 纯虚函数: 4. 虚函数与纯虚函数: 5.虚函数指针与虚 ...

  3. java中abstract是什么_java关键字abstract

    在java中我们中abstract关键字来表达抽象.举个例子: 我们说车子都可以跑(run).但有几个轮子,怎么跑,对于不同的车有不同的结果.自行车需要人踩着跑,汽车发动机推动跑等等,那么我们可以车表 ...

  4. java关键字abstract(抽象)详解

    说到抽象,想必大家第一个联想到的就是抽象画,基本上看不懂画的是啥,只能说它在表达某个概念. 在java中我们中abstract关键字来表达抽象.举个例子: 我们说车子都可以跑(run).但有几个轮子, ...

  5. c语言staticint的作用,C语言 static 声明静态变量?大佬原来用它干这事!

    原标题:C语言 static 声明静态变量?大佬原来用它干这事! C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都 ...

  6. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

  7. C语言 static 声明静态变量?大佬原来用它干这事!

    C语言可变参数只会用算啥本事?看我来抽丝剥茧干翻它! 高手在写代码的时候,会特别注重的一点就是,对外的方法对外,不对外的方法和数据,都是让其对外不可见,也就是俗称的,内部不想让别人直接访问的方法,变量 ...

  8. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

  9. 游标、事务并发和锁三者之间的那点事

    对数据库学习的不断深入,对游标的认识也在逐渐加深,游标与事务.锁有着密不可分的关系. 无论是事务.锁还是游标相对于数据库来说最主要目的是保证数据的完整性.对事务并发.锁定的深入学习才能更加完善对游标的 ...

最新文章

  1. 判断单链表是否存在环
  2. 云原生应用万节点分钟级分发协同实践
  3. php中的unbuffered_row,php – 加载数据infile和unbuffered查询错误
  4. java8 默认方法_Java 8的默认方法:可以做什么和不能做什么?
  5. Java SSM篇2——框架的基本认识
  6. Python 学习记录(1)对象命名导致的问题
  7. ​​​​​​​(复制python包,产生的问题) pip Fatal error in launcher: Unable to create process using
  8. html的特殊符号五角星,五角星怎么打出来?打出五角星符号的方法
  9. SMCJ系列TVS瞬态抑制二极管型号参数表
  10. 从gitlab上down下来的项目Django页面加载不出来
  11. 利器 | REST Assured 实践(二):断言实现
  12. 关于区块链及其数据溯源的学习笔记
  13. 容器云系列之容器技术相关概念介绍
  14. MATLAB图形计算器去广告,Mathlab Pro安卓去谷歌版下载-Mathlab计算器安卓去广告版下载v4.11.114 手机版-西西软件下载...
  15. Windows下桌面便签小工具--StickyPad简单使用教程(非StickyNotes)
  16. SQL优化(面试题)
  17. 电脑计算机和用户区分,电脑32位和64位的区别是什么
  18. 谷歌SEO优化八步走
  19. 2023西安科技大学计算机考研信息汇总
  20. 《吴军 阅读与习作讲义》 序和第3章 日常实用写作

热门文章

  1. java的子类对象_在Java中将子类对象分配给超类对象时会发生什么?
  2. mysql 锁机制及实现原理_MySQL-深入浅出锁分类及实现原理
  3. 【英语学习】【Daily English】U01 Greetings / L03 Have we met before?
  4. C#实现图(Graph)
  5. 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组
  6. 数据分析师必须会python_数据分析师必须掌握的9种数据分析方法
  7. 一个简单地C语言程序展示RSA加密原理
  8. 易语言数据类型与c 对照,易语言利用自定义数据类型和数组. 制作键对值操作类/内存配置...
  9. 使用Nsight查找CE3的渲染bug
  10. 地平线:发布线NavNet众包高精地图采集与定位方案,牵手韩国最大通讯企业 | CES 2019...