静态变量和静态方法都必须通过类名来引用。
简单使用示例
using System;
class StaticVar
{
public int x;
public static int y;
public void PrintInfo(){
Console.WriteLine("非静态变量x={0}",x);
Console.WriteLine("静态变量y = {0}",y);
}
}
class Test
{
static void Main(string[] args){
StaticVar stv = new StaticVar();
stv.x = 10;
// stv.y = 20; //error;无法使用实例引用访问静态成员“StaticVar.y”;改用类型名来限定它
StaticVar.y = 20;
stv.PrintInfo();
}
}
对于静态变量在声明时,如果没有给出初始值或使用前没有赋值的话,系统会给他们一个默认值:对于整型数据默认值为0;单精度数据为:0.0f;双精度数据为0.0;布尔型数据为False;引用型数据为null。
静态方法:
1、静态方法与静态变量一样,不属于任何特定的实例,属于类全体成员共有,由类名来调用。
2、静态方法只能访问类的静态成员,不能访问类的非静态成员。
3、非静态方法可以访问类的静态成员,也可以访问类的非静态成员。
4、静态方法不能使用示例来调用,只能使用类名来调用。
using System;
namespace TestStatic
{
class StaticTest
{
int x;
static int y;
public StaticTest(int a,int b){
x = a;
y = b;
}
public void SimplePrint(){
Console.WriteLine("x="+x+",y="+y);
}
public static void StaticPrint(){
Console.WriteLine("y={0}",y);
// Console.WriteLine("x={0}",x); //静态方法中不能使用非静态成员
}
}
class Test
{
static void Main(string[] args){
StaticTest st = new StaticTest(10,23);
st.SimplePrint();
//st.StaticPrint(); //静态方法不能使用实例来调用
StaticTest.StaticPrint();
}
}