欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

浅析C#中静态方法和非静态方法的区别

时间:2021-03-20 10:00:16|栏目:.NET代码|点击:

静态方法和非静态方法的区别:

  1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用;

  2.静态方法只能访问静态成员和方法,非静态方法都可以访问;

  3.静态方法不能标记为override,导致派生类不能重写,但是可以访问;

  4.静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候,从内存分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速度上差异可以忽略不计 

何时用静态方法,何时用实例方法:

  1.一个方法和他所在类的实例对象无关,不依赖new出来的实例,那么它就应该是静态的

  2.不需要面向对象的理念的时候用静态;比如动物-> RUN ,因为你可能会扩展出猫 run、狗 run,这时候就需要用非静态的方法

关于线程安全:

  静态方法只有一个实例,当有静态变量的时候,对于高并发的时候,并发的所有执行都走那个方法,静态变量的值就会发生改变,导致出现问题;

  当然并发不安全跟方法本身没关系,跟共享的那个资源有关系比如某个变量,每个线程都对其进行操作,都能改变其值,多线程(并发其实就是多线程),操作它,其值混乱,就有问题了 

为什么要用非静态方法

  这是本人写的一个方法,当初直接写成static方法,没有别人的原因,是因为不想实例化可以少些一行代码,并没有想过静态和非静态的区别= =!~~;当然写成非static的方法也是可以的;

  原因

  1.因为方法需要重复的调用,每次都去new一次会造成内存的开销,使用静态的方法就会一直在内存中,不需要重新new一块空间初始化数据;

  2.不需要去做OO;

  3.方法不依赖new出来的内容;

  比较经典的static方法,DBHelp里面基本上都是static方法

上一篇:微信公众平台开发之语音识别.Net代码解析

栏    目:.NET代码

下一篇:在Linux上运行C#的方法

本文标题:浅析C#中静态方法和非静态方法的区别

本文地址:http://www.codeinn.net/misctech/84220.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有