首页 > 代码库 > C# 静态成员和方法的学习小结
C# 静态成员和方法的学习小结
C# 静态成员和方法的学习小结
数据成员:
数据成员可以分静态变量、实例变量两种.
静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.
实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在.
函数成员:
方法可以主要分为静态方法,实例方法
静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变 量做为参数传给静态方法。静态
方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。
实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量,实例方法可以直接访问实例方 法、和静态方法,静态方法的访问
方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在美个特定的实例方法的拷贝,而是,相同类的所有对 象都共享每个实例方法的一个拷贝(实例方法只占用“一套
”空间)。
如果将类中的某个成员声明为static,则称该成员为静态成员。一般来说,静态成员是属于类所有的,而非静态成员则属于类的实例的。每创建一个类的实 例,都在内存中为非静态成员开辟
一片区域。而类的静态成员为类所有,为这个类的所有实例共享。无论这个类创建了多少副本,一个静态成员在内存中只占有一块 区域。
C#类中静态成员变量的生命周期问题,就是什么时候创建,什么时候销毁已声明元素的“生存期”是元素可供使用的时间周期。变量是唯一具有生存期的元 素;为此,编译器将过程参数和函
数返回值视为变量的特殊情况。变量的生存期表示它可以保留值的时间周期。在生存期内变量的值可以更改,但变量总是保留某些 值。
生存期:
实例变量:都具有与它的实例相同的生存期。当类或结构的实例终止时,它的非共享变量丢失它们的值。类或结构的每个新实例都创建它的所有非共享元素并初始化非共享变量。
静态变量: 通常在应用程序的整个运行期间都存在。Shared 元素被一直保留到应用程序停止运行时。
类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享
销毁:类被卸载时,静态变量被销毁,并释放内存空间。static变量的生命周期取决于类的生命周期
类初始化顺序:
静态变量、静态代码块初始化
构造函数
自定义构造函数
静态方法何时使用比较合适?
1.当你这个类中的这个方法不需要对象就能运行时,使用静态方法,通常都是在工具类中定义静态方法!这样使用工具类不必创建
对象,可以直接类名.方法名来使用!
例如:比如说现在你自己写了一个给数组排序的方法sort(arr);这时我们把它和别的一些方法定义成静态方法,然后这个类整体可
以看作是一个工具类,假设类名是Tools,那么当你在别的类中想要使用数组排序方法时,就可以直接Tools.sort(arr);来给你指定
的数组进行排序(当然那个工具类还是要导入包中的),而不用像一般类那样需要创建对象才能调用类中的方法,像这样Tools
tools=new Tools();tools.sort(arr);
静态成员变量何时使用比较合适?
1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
静态成员变量的访问方式:
方式1: 可以使用对象进行访问。
格式: 对象.变量名。
方式二: 可以使用类名进行访问。
格式: 类名.变量名;
注意:
1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候才使用static修饰。
static修饰成员变量的应用场景: 如果一个数据需要被所有对象共享使用的时候,这时候即可实用static修饰。
C# 静态成员和方法的学习小结