C#中static的作用
static可修饰类、字段、属性、方法。
static在使用的时候分三种方法。
1.修饰类的时候:
将类修饰为静态的,意味着这个类不能实例化对象,在调用类里面的任何内容的时候直接用类名加点的形式调用其中的方法或者字段(类名.方法/类名.字段)
说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类.
比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用。
如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用
StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
static class t
{undefined
~~~~
}
~~~~
class d
{undefined
~~~~
void f(....)
{undefined
~~~~
t v = new t();//此时程序会出现错误
}
}
2.修饰方法或者属性的时候:
将方法修饰为静态方法,表示此方法为所在的类所有,而不是这个类实例化的对象所拥有,这个方法在调用的时候需要类名加点(类名.方法)来调用。
表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法:
情况一:非静态方法:
class t
{undefined
t(....(参数,下面同))
{undefined
~~~~(方法内容,下面同)
}
void s(....)
{undefined
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....);
再在t里调用方法:sd.s(....);
情况2:静态方法:
class t
{undefined
t(....(参数,下面同))
{undefined
~~~~(方法内容,下面同)
}
static void s(....)
{undefined
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....);
3.修饰变量:
表示在每次调用该变量的方法或者类的时候,变量的值为最后一次赋值时的值,而不是再次初始化它的值。
private void s()
{
static int a=1;
a++;
}
方法第一次调用结束后a在内存内值为2;
方法第二次调用结束后a在内存内值为3;