静态类在C#中,有什么利弊/利弊?(Static classes in C#, what's

2019-07-03 18:22发布

我编程的一个小游戏我的作业,游戏是一个简单的2D游戏,怪物,物品和子弹。 基本上你跑来跑去,试图收集所有的项目硬币,怪物试图阻止你,你可以拍下来与你收集的子弹。 非常简单。

现在的问题是,我已经添加了怪物,道具,墙壁,球员和子弹静态类名为LiveObjects,这些对象可我再从代码中的任何地方访问。 它是一个不好的做法? 什么办法呢? (这不是多线程)

LiveObjects.cs

internal static class LiveObjects
{        
    public static List<Item> items = new List<Item>(); // List with all the items
    public static List<Monster> monsters = new List<Monster>(); // List with all present monsters
    public static List<Wall> walls = new List<Wall>(); // List with the walls
    public static List<Bullet> bullets = new List<Bullet>(); // List with the bullets
    public static Player player = new Player(0, 0); // The player object
}

我用了很多不同类别的操纵LiveObjects内的数据,然后以避免将整个列表,我可以直接调用它的任何方法内。

Answer 1:

优点:

  • 容易接近
  • 易编码

缺点:

  • 没有线程安全
  • 无封装
  • 减少维护


Answer 2:

如果您的应用程序是多线程的,你可能需要考虑一下周围的多个线程访问和修改静态实例的问题。 这里有一个关于线程的好ARTICAL:

http://www.yoda.arachsys.com/csharp/threads/



Answer 3:

静态类的一个优点是,它可以定义扩展方法的唯一地方。



Answer 4:

我不打算将此作为一个严重的答案,但亲的中间,因为你已经发现,就在于它是非常简单到你的实体。

其中反对的是,有些人讨厌静态类这么多,他们不会雇用你,因为你已经使用过。 http://thegrenade.blogspot.com/2009/01/static-methods-and-classes-are-always.html



Answer 5:

我认为一个静态类的这种用法是好的 - 尤其是在单线程应用程序。 像其他人所说的,你唯一的选择是通过围绕某种包含这些列表的上下文对象。

我个人认为,在这种情况下,是你选择了你的问题的最佳解决方案。 这是很容易实现的,易于使用,易于改变,如果需要的话在路上。



文章来源: Static classes in C#, what's the pros/cons?