C#是没有全局变量的,C#设计者弄了一个叫Singleton的模式,用static可以当作全局变量来用。
请看下面的类:
class Class1
{
public int intNum = 0;
public static int intNum2 = 9;
}
众所周知,我们在主类里面要想引用这个类,必须先Class1 c1 = new Class1();要想c1.intNum则必须public int intNum而不能缺少public,否则不能引用。
new出来以后,我们会惊奇的发现只能c1.intNum而不能c1.intNum2,这是为什么呢?这就是static的力量。static是静态的意思,是个修饰符,再往深的意思,就只能靠自己理解了。
这时候,你用Class1.intNum2可以访问,而且Class1.intNum2永久存在,这就是全局变量,你可以随时访问它。
如果我把static修饰符加在class前面,会怎样呢?如下:
static class Class2
{
public static int intA = 20;
}
如果是这样,那么Class2里面就不允许public int intB了,必须加修饰符public static int intB。里面的成员都可以用Class2.intA访问。
请看下面的类:
class Class1
{
public int intNum = 0;
public static int intNum2 = 9;
}
众所周知,我们在主类里面要想引用这个类,必须先Class1 c1 = new Class1();要想c1.intNum则必须public int intNum而不能缺少public,否则不能引用。
new出来以后,我们会惊奇的发现只能c1.intNum而不能c1.intNum2,这是为什么呢?这就是static的力量。static是静态的意思,是个修饰符,再往深的意思,就只能靠自己理解了。
这时候,你用Class1.intNum2可以访问,而且Class1.intNum2永久存在,这就是全局变量,你可以随时访问它。
如果我把static修饰符加在class前面,会怎样呢?如下:
static class Class2
{
public static int intA = 20;
}
如果是这样,那么Class2里面就不允许public int intB了,必须加修饰符public static int intB。里面的成员都可以用Class2.intA访问。