欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > C#核心(9)静态类和静态构造函数

C#核心(9)静态类和静态构造函数

2025/10/14 5:22:46 来源:https://blog.csdn.net/a6s686/article/details/143650650  浏览:    关键词:C#核心(9)静态类和静态构造函数

前言

我们先前已经了解了静态成员的基本构成,也简单了解了一下静态变量,现在我们就要来看一下静态类和静态构造函数了,这些其实在上一节我已经在例子里有提到过,相信聪明的你甚至已经发现了一些规律。

GPT对c#中静态类和静态构造函数都与静态成员的作用解释如下:

静态类的作用有:

  • 封装一组相关的静态方法,用于处理特定的功能或实现特定的算法。
  • 提供一种将方法组织在一起的方式,使代码更加易于理解和维护。
  • 限制类的实例化,通过强制使用静态成员,可以确保类的使用方式符合设计意图。 

静态构造函数的作用有:

  • 初始化静态成员变量,确保在类的第一个实例被创建之前就能对静态成员进行初始化。
  • 执行与静态成员相关的一次性初始化工作,例如读取配置文件、建立数据库连接等。
  • 控制静态成员的初始化顺序,静态构造函数可以被用来确保静态成员按照特定的顺序进行初始化。

我如果就这样写了你大抵会觉得很抽象,但先别急,且听我慢慢道来。

静态类

概念:用static修饰的类

特点:只能包含静态成员,不能被实例化!

既然不能被实例化了,那意思是啥,还记得我先前给大家说的吗,其实类呢,相当于是一个工具,如果当全场只有这一个类的时候,我们就没有必要去实例化了吧,我们直接调用类里的方法来完成我们想做的事就可以了。 

那我再来概括一下它的作用吧:

  1. 将常用的静态成员写在静态类里,可以方便我们的使用。
  2. 它不能被实例化,更能体现它作为工具的唯一性,方便我们全局调用

举个简单的例子:Console,你可以f12自己进去查看一下。

静态构造函数

概念:在构造函数上加上static修饰

特点:

  1. 静态类和普通类都可以有
  2. 不能使用访问修饰符
  3. 不能有参数
  4. 只会自动调用一次

作用:

在静态构造函数中初始化静态变量,一般来说是用来做属性初始化用的。 

例子

其实讲到这里,你大概已经能明白静态这些东西存在的意义了,就是为了你去设计一个全局只存在唯一一个,而且不想要它直接出现在场景中的东西。

那我们这次的例子就用一个敌人管理器。

using System;
using System.Collections.Generic;public static class EnemyManager
{private static List<Enemy> enemies = new List<Enemy>();static EnemyManager(){InitializeEnemies();}private static void InitializeEnemies(){// 创建敌人对象并添加到敌人列表中,并对属性做一些操作Enemy enemy1 = new Enemy("Enemy 1", 100);Enemy enemy2 = new Enemy("Enemy 2", 200);Enemy enemy3 = new Enemy("Enemy 3", 150);//你想的话,可以在这里对敌人的位置进行一些操作,比如随机生成enemies.Add(enemy1);enemies.Add(enemy2);enemies.Add(enemy3);}//任务一:在此处写一个改变敌人数量的静态方法public static void PrintEnemyNames(){foreach (Enemy enemy in enemies){Console.WriteLine(enemy.Name);}}
}public class Enemy
{public string Name { get; set; }public int Health { get; set; }public Enemy(string name, int health){Name = name;Health = health;}//任务二:在此处添加敌人的死亡状态,通过敌人死亡来减少敌人数量
}public class Program
{static void Main(string[] args){// 使用敌人管理器打印敌人名称EnemyManager.PrintEnemyNames();//模拟一下你完成的任务}
}

我在这个例子中留下了两个任务,希望你能抽时间去写一下,再加强体会一下静态这个概念。

总结

静态的相关东西我们大致就已经讲完了,我们讲这么多其实都是为了unity设计模式中的单例模式服务,这个东西你们在日后做自己的demo的时候会经常使用。

所以请务必熟悉静态相关的知识点。

还是那句话,脚踏实地,一步一个脚印。

请期待我下一篇博客!

我来自佑梦游戏开发,感谢你的关注和订阅!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词