[C#——菜鸟学习笔记:静态变量]
主要是记录一下学习笔记,希望能利用这个过程让自己加深一下印象,如果能对其他同学有一点点帮助也是极好的,不敢在各位大神面前班门弄斧。也希望各位大神能多多指点,带带小老弟!!!
1. 关键字
static
例: public static int num;
2. 静态存储
1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储
2)静态存储变量是一直存在的。
3)静态存储只会初始化一次
源自:百度百科
静态变量定义
静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取。反之,如果不声明为static,即使和Main方法从属于同一个类,也必须经过实例化
关键字static把类成员定义为静态的,意味着,该类中只有一个该成员的实例,无论有多少个类的对象被创建,只会有一个该静态成员的副本。
源自:菜鸟教程
3. 实例
using System;
namespace StaticVarApplication
{
class StaticVar
{
public static int num;
public void count()
{
num++;
}
public int getNum()
{
return num;
}
}
class StaticTester
{
static void Main(string[] args)
{
StaticVar s1 = new StaticVar();
StaticVar s2 = new StaticVar();
s1.count();
s1.count();
s1.count();
s2.count();
s2.count();
s2.count();
Console.WriteLine("s1 的变量 num: {0}", s1.getNum());
Console.WriteLine("s2 的变量 num: {0}", s2.getNum());
Console.ReadKey();
}
}
}
代码编译执行的结果为:
s1 的变量 num: 6
s2 的变量 num: 6
程序源自:菜鸟教程
因为静态变量num在定义时就已经分配了存储单元,并保持不变,count()函数调用时,S1,S2均是指向num的存储单元,而不是像动态变量那样进行调用变量,分配地址,赋值,释放。所以count()函数返回的结果一直存储在num中不会被释放,进行第二次调用时,在第一次返回值的基础上进行了自加1,所以最后的输出结果是6。
表面上看是S1,S2各自加1了三次,但实际上是num自加1了六次,最后输出的都是num的值,这也解释了“当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。”