C#中的静态类,有什么优缺点?
我正在为我的学校作业编写一个小游戏,游戏是一个简单的2D游戏,有怪物,物品和子弹。 基本上你跑来跑去并试图收集所有物品硬币,怪物试图阻止你,你可以用你收集的子弹击落它们。 非常简单。
问题是,我已经将怪物,物品,墙壁,玩家和子弹添加到名为LiveObjects的静态类中,然后我可以从代码中的任何位置访问这些对象。 这是一种不好的做法吗? 什么是替代品? (它不是multithreading的)
LiveObjects.cs
internal static class LiveObjects { public static List items = new List(); // List with all the items public static List monsters = new List(); // List with all present monsters public static List walls = new List(); // List with the walls public static List bullets = new List(); // List with the bullets public static Player player = new Player(0, 0); // The player object }
我使用了很多不同的类来操作LiveObjects中的数据,然后为了避免传递整个List,我可以直接在任何方法中调用它。
优点:
- 容易接近
- 易于编码
缺点:
- 没有线程安全
- 没有封装
- 可维护性降低
如果您的应用程序是multithreading的,您可能需要考虑多个线程访问和修改静态实例的问题。 这是一个关于线程的好文章:
静态类的一个优点是它是唯一可以定义扩展方法的地方。
我并不认为这是一个严肃的答案,但正如你所发现的那样,在专业人士中,这是非常简单的到达你的实体。
其中有些人讨厌静态课程,以至于他们不会雇用你,因为你已经习惯了。 http://thegrenade.blogspot.com/2009/01/static-methods-and-classes-are-always.html
我认为静态类的使用很好 – 特别是在单线程应用程序中。 像其他人所说的那样,你唯一的选择是传递包含这些列表的某种上下文对象。
在这种情况下,我个人的观点是,您已经为您的问题选择了最佳解决方案。 它易于实施,易于使用,并且如果需要的话可以轻松更改。