C# 静态类(static class)

Posted by Packy on April 9, 2018

今天在做毕设的过程中,由于需要使用到Unity3D, 所以使用c#来进行模型驱动。在通过socket接收到人脸特征点数据之后,需要用数据驱动特征点位置,为了使程序逻辑清晰,我把接收数据和数据驱动分成了两个c#脚本。但是问题也来了,c#中如何使用“全局变量”,c/cpp可以使用extern来声明变量,使得变量可以在不同文件之间共享,但是c#有类似的功能吗?

标签(空格分隔): C# static class


静态类

静态类(static class)不能实例化,这是静态类与非静态类一个显著的区别。

静态类的主要特征

  1. 仅包含静态成员。
  2. 无法实例化。
  3. 静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。
  4. 不能包含实例构造函数。
  5. 如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。

数据共享

在unity3d c# 中,可以用public来修饰一个静态类,表示从外部包可以访问这个类。

要注意的是,静态类内部使用的变量或方法也必须使用static关键字修饰,也就是说静态类中的所有变量和方法都需要使用static修饰。

例子:

通过在file.cs中定义一个静态类pubilc static Myclass{},但是不能实例化. 可以直接对其成员进行访问Myclass.mem().

如果在other.cs中需要对其进行访问,可以使用file.Myclass.mem()来访问成员进行操作。

Reference

C# 之 static的用法详解