我们可以使用 static 关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。
关键字 static 意味着类中只有一个该成员的实例。
静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取。
静态变量可在成员函数或类的定义外部进行初始化。你也可以在类的定义内部初始化静态变量。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量,他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.
不管通过哪种方法改变静态成员变量,它都输出最后的赋值。
例如
using System;
namespace staticApplication
{
class Person
{
public static int ages;
public void setAge(int n)
{
ages=n;
}
public int getAge()
{
return ages;
}
}
class staticApplication
{
static void Main(string[] args)
{
Person p1=new Person();
Person p2=new Person();
p1.setAge(5);
Console.WriteLine("p1的变量age:{0}",p1.getAge());
p2.setAge(6);
Console.WriteLine("p2的变量age:{0}",p2.getAge());
p1.setAge(10);
p2.setAge(12);
Person.ages=15;
Console.WriteLine("p1的变量ages:{0},p2的变量ages:{1},类Person的变量ages:{2}",p1.getAge(),p2.getAge(),Person.ages);
}
}
}
输出结果:
p1的变量age:5
p2的变量age:6
p1的变量ages:15,p2的变量ages:15,类Person的变量ages:15
二、静态方法
静态方法只能访问 静态变量。不能访问非静态变量。
静态方法和实例方法的访问权限表
静态成员变量 静态方法 实例成员变量 实例方法
静态方法 直接访问 直接访问 不可直接访问 不可直接访问
实例方法 直接访问 直接访问 直接访问 直接访问
总之:实例方法的存在必须要有对象实例的存在,如果对象实例不存在,则实例方法也就没有调用它的主人。静态方法的存在前提是类的存在,所以无需声明和New对象。