静态要领和非静态要领的区分:
1.静态要领不须要类实例化就能够挪用,反之非静态要领须要实例化后才挪用;
2.静态要领只能接见静态成员和要领,非静态要领都能够接见;
3.静态要领不能标记为override,致使派生类不能重写,然则能够接见;
4.静态成员是在第一次运用时举行初始化。非静态的成员是在建立对象的时刻,从内存分派上来讲静态是一连的,非静态在内存的存储上是离散的,因而静态要领和非静态要领,在挪用速率上,静态要领速率一定会快点,由于非静态要领须要实例化,分派内存,但静态要领不必,然则这类速率上差别能够忽略不计
什么时候用静态要领,什么时候用实例要领:
1.一个要领和他地点类的实例对象无关,不依赖new出来的实例,那末它就应该是静态的
2.不须要面向对象的理念的时刻用静态;比方动物-> RUN ,由于你可能会扩展出猫 run、狗 run,这时刻就须要用非静态的要领
关于线程平安:
静态要领只要一个实例,当有静态变量的时刻,关于高并发的时刻,并发的一切执行都走谁人要领,静态变量的值就会发作转变,致使出现问题;
固然并发不平安跟要领自身没紧要,跟同享的谁人资本有关联比方某个变量,每一个线程都对其举行操纵,都能转变其值,多线程(并发实在就是多线程),操纵它,其值杂沓,就有问题了
为何要用非静态要领
这是本人写的一个要领,当初直接写成static要领,没有他人的缘由,是由于不想实例化能够少些一行代码,并没有想过静态和非静态的区分= =!~~;固然写成非static的要领也是能够的;
缘由
1.由于要领须要反复的挪用,每次都去new一次会形成内存的开支,运用静态的要领就会一直在内存中,不须要从新new一块空间初始化数据;
2.不须要去做OO;
3.要领不依赖new出来的内容;
比较典范的static要领,DBHelp内里基本上都是static要领
以上就是C#中关于静态与非静态要领的区分引见的细致内容,更多请关注ki4网别的相干文章!