静态成员和非静态成员的区别?

2014-11-23 23:19:46 · 作者: · 浏览: 10

答:


静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问


不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问


一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值


静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等


示例:


using System;


using System.Collections.Generic;


using System.Text;


namespace Example01


{


class Program


{


class Class1


{


public static String staticStr = “Class”;


public String notstaticStr = “Obj”;


}


static void Main(string[] args)


{


//静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值


Console.WriteLine(“Class1′s staticStr: {0}”, Class1.staticStr);


Class1 tmpObj1 = new Class1();


tmpObj1.notstaticStr = “tmpObj1″;


Class1 tmpObj2 = new Class1();


tmpObj2.notstaticStr = “tmpObj2″;


//非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值


Console.WriteLine(“tmpObj1′s notstaticStr: {0}”, tmpObj1.notstaticStr);


Console.WriteLine(“tmpObj2′s notstaticStr: {0}”, tmpObj2.notstaticStr);


Console.ReadLine();


}


}


}


结果:


Class1′s staticStr: Class


tmpObj1′s notstaticStr: tmpObj1


tmpObj2′s notstaticStr: tmpObj2