静态成员基本概念
1.用static修饰的 成员变量、成员方法、成员属性等被称为静态成员
2.静态成员特点:共享,整个程序都可以使用
3.静态成员使用方法:类名.(成员变量名、成员方法名、成员属性名)
class Student
{
public static string teacherName;
}
Student.teacherName = "张三";
Console.WriteLine(Student.teacherName);
4.静态方法的使用
class Test
{
public static float PI = 3.14f;
public static float Circle(float r)
{
return PI * r * r;
}
}
float result = Test.Circle(3);
Console.WriteLine(result);
静态成员存储方式
1.静态成员在内存中有单独的存储位置
2.静态成员和程序同生共死,程序一运行就被创建,程序一结束就被销毁
3.静态成员被创建时无需先实例化对象,它创建在实例化对象之前
4.静态成员过多会极大占用内存
5.静态成员具有唯一性
静态函数中不能使用非静态成员
public static float PI = 3.14f;
private int num = 100;
public static float Circle(float r)
{
Console.WriteLine(num);
return PI * r * r;
}
原因:非静态成员只有将对象实例化后才会存在,没有实例化对象前是不存在的,
而静态函数是程序一运行就存在,非静态成员如果一直没实例化对象,
代表值不存在,所以静态函数不能使用不存在的值
非静态函数可以使用静态成员
class Test
{
public static float PI = 3.14f;
private int num = 100;
public void Show()
{
Console.WriteLine(PI);
}
}
原因:静态成员程序一运行就存在,不管什么时候实例化对象,静态成员都存在,随时都可以使用
常量和静态变量
1.const(常量)为特殊的static(静态)
2.相同点:他们都可以通过(类名.名字)方法使用
3.不同点:
1.const必须初始化,不能修改 static没有这个规则
2.const只能修饰变量,static 可以修饰很多
3.const 一定是写在访问修饰符后面的,static 没有这个要求
class Test
{
public const int score1 = 0;
public static int score2;
public const int age1 = 18;
static public int age2 = 20;
public static void Show()
{
Console.WriteLine(score1);
Console.WriteLine(score2);
}
}