济南做网站知识,企业邮箱怎么申请,漯河市郾城区网站建设,怎么查域名是否被注册1#xff0e;静态变量在C#程序中#xff0c;没有全局变量的概念#xff0c;这意味着所有的成员变量只有该类的实例才能操作这些数据#xff0c;这起到了“信息隐藏”的作用。但有些时候#xff0c;这样做却不是个明智的选择。假设我们要定义一个图书类#xff0c;要求该类…1静态变量在C#程序中没有全局变量的概念这意味着所有的成员变量只有该类的实例才能操作这些数据这起到了“信息隐藏”的作用。但有些时候这样做却不是个明智的选择。假设我们要定义一个图书类要求该类能保存图书的数量即每增加一本图书定义一个实例图书的数量应该加1。如果没有静态变量我们需要将图书的数量保存在每本图书实例里然而这样的变量要在不同图书实例里重复存储图书实例数量少的话我们还能接受如果图书实例数量较多的话比如成千上万我们无法想象这要造成多少资源如内存、磁盘空间的浪费更让人无法忍受的是因为图书实例的数量要保存在每本图书实例里该值肯定是不同的。要使这些图书实例中保存的图书实例数量一致我们必须在每增加一本新书生成一个新实例时修改其他所有图书实例中保存的该值。Oh,My God!你会重新向往面向过程的程序设计方法向往拥有全局变量的时代。但这种局面不会出现因为C#中为你准备好了另外一种变量类型静态变量。它在类中类似全局变量保存类的公共信息所有该类的实例对象共享该值。静态变量的声明方式如下 [访问修饰符] static 数据类型 变量名;这里的访问修饰符跟类的其它成员一样可以是public,protected,private或internal等。静态变量又如何使用呢 静态变量必须使用类名来引用而不能使用类的实例因为静态变量不属于任何实例而是共有的。我们可以打个比方在一个班级中有些物品是个人的我们想使用时必须指出物品的所有者比如说“王三的自行车”在C#程序中我们可以使用王三.自行车的格式。有些物品是大家共有的物品不能以个人名义使用而是用班级的名义使用比如班集体出资买的篮球只能说“班级的篮球”而不能说“王三的篮球”。这绝对是不行的这对其他人绝对是不公平的。说一句有用的就是静态变量是用类名来引用它。即类名.静态变量名;举个具体的例子如下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(); } }程序中被注释的部分stv.y 20是使用实例引用静态变量这将引发错误。另外我想说一句对于静态变量在声明时如果没有给出初始值或使用前没有赋任何值的话系统会给他们一个默认值对于整型数据默认值为0单精度数据为0.0f双精度数据为0.0布尔型数据为False引用型数据为null。2静态方法静态方法与静态变量一样不属于任何特定的实例属于类全体成员共有由类名来调用。但要注意以下几点静态方法只能访问类的静态成员不能访问类的非静态成员非静态方法可以访问类的静态成员也可以访问类的非静态成员静态方法不能使用实例来调用只能使用类名来调用。这里用一个具体的例子来说明 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(xx,yy); } 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(); } } }静态变量在程序运行前就要为其分配存储空间。转载于:https://www.cnblogs.com/liyanwei/p/3867621.html