C# static:静态成员
在 C# 中,我们可以使用 static 关键字声明属于类型本身而不是属于特定对象的静态成员,因此不需要使用对象来访问静态成员。在类、接口和结构体中可以使用 static 关键字修饰变量、函数、构造函数、类、属性、运算符和事件。
注意:索引器和析构函数不能是静态的。
若在定义某个成员时使用 static 关键字,则表示该类仅存在此成员的一个实例,也就是说当我们将一个类的成员声明为静态成员时,无论创建多少个该类的对象,静态成员只会被创建一次,这个静态成员会被所有对象共享。
1、静态属性
使用 static 定义的成员属性称为“静态属性”,静态属性可以直接通过类名.属性名的形式直接访问,不需要事先创建类的实例。静态属性不仅可以使用成员函数来初始化,还可以直接在类外进行初始化。
下面通过一个示例来演示一下静态变量的使用:
using System; namespace net.yinzhong { class Demo { static void Main(string[] args) { Test.str = "C语言"; Console.WriteLine(Test.str); Test test1 = new Test(); test1.getStr(); Test test2 = new Test(); test2.getStr(); test2.setStr("http://www.yinzhong.net/"); test1.getStr(); test2.getStr(); } } public class Test { public static string str; public void setStr(string s){ str = s; } public void getStr(){ Console.WriteLine(str); } } }
运行结果如下:
C语言 C语言 C语言 http://www.yinzhong.net/ http://www.yinzhong.net/
2、静态函数
除了可以定义静态属性外,static 关键字还可以用来定义成员函数,使用 static 定义的成员函数称为“静态函数”,静态函数只能访问静态属性。
下面通过示例来演示静态函数的使用:
using System; namespace net.yinzhong { class Demo { static void Main(string[] args) { Test test1 = new Test(); test1.setStr("C语言"); Test.getStr(); Test test2 = new Test(); test2.setStr("http://www.yinzhong.net/"); Test.getStr(); } } public class Test { public static string str; public void setStr(string s){ str = s; } public static void getStr(){ Console.WriteLine(str); } } }
运行结果如下:
C语言 http://www.yinzhong.net/