只要程序加载了类的字节码

时间:2021-10-10 08:45:43


1)在语法界说上的区别:


类变量也叫静态变量,静态变量前要加static关键字,而实例变量前则不加;

实例变量也叫东西变量,即没加static 的变量;


2)在措施运行时的区别:


实例变量属于某个东西的属性,必需创建了实例东西,此中的实例变量才会被分配空间,才华使用这个实例变量。静态变量不属于某个实例东西,而是属于类,所以也称为类变量,只要措施加载了类的字节码,不用创建任何实例东西,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必需创建东西后才可以通过这个东西来使用。静态变量则可以直接使用类名来引用;


3)在运行表示功效的区别:


类变量和实例变量的区别在于:类变量是所有东西共有,此中一个东西将它值转变,其他东西得到的就是转变后的功效;而实例变量则属东西私有,某一个东西将其值转变,,不影响其他东西;

再来看看下面这段措施:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StaticTest A, B;//界说类的变量 A = new StaticTest();//创建类的实例A B = new StaticTest();//创建类的实例B StaticTest.stal = StaticTest.stal + 10;//通过类名给静态变量赋值 A.a2 = A.a2 + 10;//给实例A的成员A2赋值 StaticTest.stal = StaticTest.stal + 10;//通过类名给静态变量赋值 B.a2 = B.a2 + 20;//给实例B的成员赋值 Console.WriteLine("StaticTest.stal+{0},A.a2={1}", StaticTest.stal, A.a2);//输出静态变量和实例A的成员a2的值 Console.WriteLine("StaticTest.stal+{0},B.a2={1}", StaticTest.stal, B.a2);//输出静态变量和实例B的成员a2的值 Console.ReadKey(); } } class StaticTest { public static int stal = 10;//界说静态变量 public int a2 = 10;//界说实例变量 } }

运行功效如下图所示:

只要程序加载了类的字节码