C#静态方法,静态变量
来源:互联网 发布:关键词诊断优化 编辑:程序博客网 时间:2024/05/16 02:02
使用Static修饰符修饰的方法是静态方法,反之是非静态方法,静态方法和静态变量在创建后始终存在于同一块内存中,它不属于某一个类的具体实例,而是属于类本身,而每创建一个类的实例,系统都会为每一个非静态成员分配一个内存空间,而静态成员无论创建多少实例,类的静态成员在内存中都只占有同一块内存区域.静态字段和静态成员通常适用于一些不会 经常变化而用频繁使用的数据,如数据库连接字符串,同时由于不会自动销毁,需及时进行回收.
C#中静态方法和非静态方法区别:
C#静态方法为类所有,在类实例化之前即可使用,非静态方法可以访问类中的任何成员(包括静态成员),而静态方法只能访问静态成员,所以Static内存只能存在Static变量和Static方法,正因为Static方法为类所有,所以在Static内部不能使用this关键字(this表示当前对象,Static不能为类实例所访问),类的静态方法在类实例化之前就可以使用,而类中的非静态成员必须在类实例化后才可以分配内存.静态方法的效率比非静态方法高,静态方法的缺点是不会自动进行销毁,而实例化的方法可以自动销毁.静态方法和静态变量创建后始终使用同一块内存,而使用实例化的方法会创建多个内存.
Class Test{
public int k;
pubic Static int b;
public int c;
Test(){ c=5}
}
在这段代码中程序的执行顺序中b>c>k,即静态成员在类实例化之前就已分配内存空间,非静态成员必须在类实例化后才分配内存空间,而在实实例化后刚必须
调用类的构造函数,所以变量的实例化顺序是: 静态成员>构造函数>非静态成员
class A{
int x;
Static int y;
Static void F(){
x=1; //错误,不允许访问
y=2; //正确
}
}
静态方法F()可以访问静态成员y,但是不能访问非静态成员x,因为x作为非静态成员,在类的每一个实例中都占有一个内存存储,而静态方法是类所共享的,他无法判断当前的x是哪个类的实例,所以不知道中内存的哪个地址去读取x,而y作为静态成员,所有类的实例都公用一个副本,很容易找到地址.
私有构造函数: 私有构造函数的类不能被实例化,因为private的访问级别是私有的,只能在类里面访问,类外面访问不了
protected: 保护级别,当前类和其派生类(子类)中可以访问
Internal :默认级别,当前程序集中使用
- C#静态方法,静态变量
- C#静态变量、静态方法、静态类
- C#静态变量和静态方法的线程安全问题
- C#中的静态方法和静态变量的一些总结
- c#静态方法或者变量的调用
- C# 静态类,静态变量,静态函数
- 静态变量和静态方法
- 静态变量与静态方法
- 静态变量和静态方法
- 静态变量、静态方法说明
- 静态变量和静态方法
- 静态方法 静态变量初始化
- 静态方法和静态变量
- 静态方法和静态变量
- //静态变量 和静态方法
- 静态变量与静态方法
- 静态方法和静态变量
- 静态变量与静态方法
- 一个css中z-index的用法
- 代码面试最常用的10大算法
- Intel Hadoop Distribution 2.5.1 HBase Thrift启动异常
- Wireshark抓包分析Sip流程
- andriod柱形图简单实现
- C#静态方法,静态变量
- 有时候容易受骗是一种善良的表现
- Spring Security
- 美文
- 抽象类实例
- js ==与===区别(两个等号与三个等号)
- 看完<软件随想录>有感
- OpenGL中viewport和 scissor test的问题
- Objective-C Blocks测试题与解析