OneBigLoser
OneBigLoser
发布于 2024-07-04 / 9 阅读
0
0

静态成员

想象一下,学校里有一个公共失物招领箱。任何同学捡到东西都可以放进去,任何同学丢了东西都可以来查找。这个失物招领箱就类似于程序中的静态成员,它属于整个学校,而不是某个特定的班级或学生。

什么是静态成员?

静态成员是类级别的成员,而不是实例级别的成员。静态成员可以是字段、属性、方法、事件或构造函数。静态成员属于类本身,而不是类的某个对象实例。静态成员在整个程序运行期间只存在一个副本,并且不依赖于类的实例。

静态成员的用途:

  1. 存储共享数据: 就像失物招领箱可以存放所有学生丢失的物品一样,静态成员可以用来存储所有对象共享的数据,比如一个游戏中所有玩家的总人数。

  2. 提供工具类方法: 有些方法不需要针对某个具体的对象进行操作,而是提供一些通用的功能,比如计算器程序中的加减乘除方法。这些方法就可以声明为静态方法。

游戏开发中的静态成员:

在游戏开发中,静态成员非常常见,比如:

  • 游戏状态管理: 可以使用静态变量来存储游戏当前的关卡、分数、玩家血量等信息。

  • 资源加载: 可以使用静态方法来加载游戏资源,比如图片、音乐等,避免重复加载。

  • 工具类: 可以使用静态方法来实现一些常用的功能,比如计算距离、角度等。

静态成员语法规则:

使用 static 关键字来声明静态成员,例如:

public class 游戏 {
  public static int 玩家数量 = 0; // 静态变量,存储玩家数量

  public static void 开始游戏() { // 静态方法,开始游戏
    // ...
  }
}

优点:

  • 共享数据: 所有对象都可以访问和修改静态成员,方便数据共享。

  • 节省内存: 静态成员只在内存中存储一份,即使创建多个对象也不会增加内存占用。

缺点:

  • 容易造成数据混乱: 因为所有对象都可以修改静态成员,所以需要注意避免数据被意外修改。

  • 生命周期过长: 静态成员在程序启动时创建,直到程序结束才销毁,如果长时间占用大量内存可能会影响程序性能。

简单示例:

public class 玩家 {
  public static int 总人数 = 0; // 静态变量,存储玩家总人数
  public string 名字;

  public 玩家(string 名字) {
    this.名字 = 名字;
    玩家.总人数++; // 每创建一个玩家,总人数加一
  }
}

// 使用示例:
玩家 玩家1 = new 玩家("小明");
玩家 玩家2 = new 玩家("小红");
Console.WriteLine("当前玩家数量:" + 玩家.总人数); // 输出:当前玩家数量:2

巩固练习:

基础题目:

  1. 创建一个“计数器”类,包含一个静态变量 计数 和两个静态方法 增加获取计数

  2. 创建一个“学生”类,包含一个静态变量 总人数 和一个实例变量 姓名,在创建学生对象时自动增加 总人数

进阶题目:

  1. 设计一个简单的游戏登录系统,使用静态变量存储当前在线玩家数量,并限制最大在线人数。

  2. 实现一个单例模式,确保一个类只有一个实例,并提供全局访问点。


评论