C#中static关键字的作用
加了static的成员和没加static的成员有什么区别?static都能修饰什么?方法 变量?还有别的么?
补充:我想知道 static都能修饰什么 方法 变量 还是什么?
那么被static修饰后的东西 和原来有什么区别还有 一般什么情况下才用static修饰这些东西?
追问:那static除了能修饰方法之外 还能修饰什么?
加了static的成员和没加static的成员有什么区别?static都能修饰什么?方法 变量?还有别的么?
补充:我想知道 static都能修饰什么 方法 变量 还是什么?
那么被static修饰后的东西 和原来有什么区别还有 一般什么情况下才用static修饰这些东西?
追问:那static除了能修饰方法之外 还能修饰什么?
答案:static意思是静态,可以修饰类、字段、属性、方法标记为static的就不用创建实例对象调用了,可以通过类名直接点出来
比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用。
如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用
StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
上面有说把static理解为全局变量这个说法是错的,所有提升为成员变量的都可以理解为全局变量。
static三种用法:
1.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数:
private void s()
{
static int a=1;
a++;
}
方法第一次调用结束后a在内存内值为2;
方法第一次调用结束后a在内存内值为3;
2.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法:
情况一:非静态方法:
class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
void s(....)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....);
再在t里调用方法:sd.s(....);
情况2:静态方法:
class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
static void s(....)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....);
3.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类:
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(....)
{
~~~~
t v = new t();//此时程序会出现错误
}
}
同意“限量版” 。static修饰的变量 方法 你就可以把他们理解成时全局变量或者方法
类的静态方法不属于某个实例。属于整个类!
重点就这些!
static在C#中的定义是静态的含义,例如某方法定义成static 修饰符,则表明其是静态成员,不随实例来变化,其由类名去访问,无法实例化去访问静态成员。比如说你写了两个类. A类和B类 你在B类中写了个方法C 该方法前面用了修饰符static 如果你在A类中要调用B类中的C方法 直接可以B.C();就可以直接调用到这个方法,如果不加static这个修饰符的话用调用这个方法就必须先B v=new B(); 然后用v.c()才能调用到这个方法static可以修饰变量和方法...用static修饰的变量或方法是不可以new出来的就是说无法实例化...