日期:2014-05-18 浏览次数:20881 次
前一阵子项目中,一直在用静态方法,或者是静态变量,就从网上查了一些资料做了小小的一个梳理与总结,便用加深理解。
那什么是静态方法呢?最直观上静态方法采用了使用了static 修饰符。静态方法作为一种特殊的成员方法,它可以看作为是属于类本身的一种方法,而不属于类的某一个具体的实例。所以对静态方法不需要类的实例化就可以使用了,使用时格式一般而是采用类名.静态方法。
由于静态方法的特殊性,什么情况下我们使用静态方法呢?在程序中如何可以利用静态字段或者静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,这时静态方法效率要稍微高一些,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。
静态和非静态的方法在写入内存方面又有什么区别呢?不同与非静态方法需要多个内存,静态方法创建后,使用的一直是同一块内存,这样,静态方法的效率是相对高一些的,但是,静态方法是无法进行自行销毁。而不管这些方法、属性以后有没有用到,即使是没有人再访问程序,这部分内存仍然不会释放。还有就是,所有访问者看到的静态属性的数据几乎都是一样的,比如A用户设置了UserName这个属性,B用户访问的时候,得到的UserName仍然是A用户设置的那个。这种特性,如果用在固定数据中,那不会有太大问题,比如连接字符串之类的。
静态方法又有什么缺陷呢?当说到缺点时,我个人认识,就是在面向对象编程方面的欠缺,静态方法是不支持使用抽象或虚的方法进行扩展和多态的,这样,很大的限制了软件的灵活性,所以在使用的时候,还是要慎重,如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。当然你完全可以把所有的实例方法都写成静态的,将实例作为参数传入即可,一般情况下可能不会出什么问题。从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象反之使用静态方法。这只是从面向对象角度上来说的。如果从线程安全、性能、兼容性上来看也是选用实例化方法为宜。
C#静态方法的使用情况的一些相关内容就向你介绍到这里,希望对你学习和使用C#静态方法有所帮助。