C# 中的静态类有什么优点/缺点?

2023-12-13

我正在为我的学校作业编写一个小游戏,该游戏是一个简单的 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 内的数据,然后为了避免传递整个列表,我可以直接在任何方法内调用它。


Pros:

  • 容易接近
  • 轻松编码

Cons:

  • 没有线程安全
  • 无封装
  • 可维护性降低
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的静态类有什么优点/缺点? 的相关文章

随机推荐

  • 当映射到相同类型时,Scala 的 map() 的行为是否应该不同?

    在Scala Collections框架中 我认为使用时存在一些违反直觉的行为map 我们可以区分 不可变 集合的两种转换 那些其实现调用newBuilder重新创建结果集合 以及那些经历隐式CanBuildFrom获得建造者 第一类包含所
  • 覆盖默认的 Android 消息应用程序

    我想覆盖默认的 Android 消息应用程序 如果我收到短信或彩信 我想将其发送到电子邮件 但我不希望在电话上收到任何通知 所以基本上我想替换默认的消息应用程序 如何使我的应用程序成为接收短信 的默认应用程序 多谢 这正是我所需要的 但我还
  • 如何在 SQL 中创建临时表以在多个 ADF 活动中使用?

    我需要在执行 Azure 数据工厂管道时在 SQL Server 中创建全局临时表 该表将在多项活动中使用 我已经尝试了几种方法 包括一种使用针对以下目标的存储过程活动sys sp executesqlSP 和CREATE TABLE语句作
  • 如何使用 AVCapturePhotoOutput

    我一直致力于使用自定义相机 最近我升级到 Xcode 8 beta 以及 Swift 3 我最初有这个 var stillImageOutput AVCaptureStillImageOutput 但是 我现在收到警告 AVCaptureS
  • 如何在不禁用 WinForms TextBox 的情况下使文本不可选择?

    是否可以在不禁用 TextBox 的情况下使 TextBox 中的文本不可选择 它是一个 RichTextBox 我需要它的格式设置和选择功能 我无法禁用它 因为我想处理 MouseMove 和 MouseDown 事件 到目前为止 我已经
  • 对实体数组进行迭代,并根据“其他键”匹配的值获取某个键的值

    我有一个实体类数组 例如 SubmittedAnswer 它的 JSON 格式如下所示 submittedAnswers submittedQuestionId C7B3C4BE CC3C 438F A118 E798884A5FE0 se
  • Strapi 在用户注册时返回错误代码 400

    每次我尝试注册测试用户时 Strapi 用户注册都会返回错误 400 Bad Request 但用户确实是在 Users 集合中创建的 我使用的是标准的 Strapi 电子邮件插件 不是发送网格插件 每次我注册用户时 该插件不会发送电子邮件
  • 如何在 Pandas 中绘制条形堆栈?

    目标是使用 Pandas 内置绘图模块绘制如下所示堆叠的条形图 然而 我找不到任何试图实现类似目标的类似例子 我正在工作的示例代码如下 import pandas as pd import matplotlib import matplot
  • 语法错误:JSON 中出现意外的标记

    我正在使用 http get 执行 GET 请求 响应采用 JSON 格式 但某些字符采用 HTML 编码 示例如下 编码为 quot quot description quot quot invalid quot quot errorCo
  • iCloud 会同步所有应用程序的 Document 文件夹中的文件吗?

    我有一个关于 iCloud 的问题 希望您能帮助我 我已阅读iCloud 文档好几次了 我从该文档中得到的是 iCloud 不会将应用程序的文档文件夹更新到 iCloud 服务器 除非该应用程序有配置的 iCloud 权利 但是 我总是看到
  • C 错误“可变大小的对象可能未初始化”[重复]

    这个问题在这里已经有答案了 可能的重复 C 编译错误 可变大小的对象可能未初始化 我遇到了一个问题 因为我的编译器仍然给我一个错误 可变大小的对象可能未初始化 我的代码有什么问题吗 int x y n i printf give me th
  • 使用 VBA 识别并删除电子表格中的不间断空格字符

    好吧 我已经创建了 在 StackOverflow 的最佳帮助下 一个用户定义函数 它标识给定单元格内特定的 不可见的 不可打印的控制字符 然后 UDF 创建一个消息框 告诉用户已找到并删除了哪些字符 这些函数不会费心去定位 32 个 AS
  • 设备设置独立字体大小

    在开发我的应用程序时 我意识到如果有人改变了设备的正常字体大小 我的应用程序字体大小也会改变 并且会破坏我设计的一些视觉效果 所以我想问是否有一种方法可以独立于设备设置来修复文本大小 Thanks 查看源码DisplaySettings j
  • 在 Application Insights 中查看 POST 请求正文

    是否可以在 Application Insights 中查看 POST 请求正文 我可以看到请求详细信息 但看不到应用程序见解中发布的有效负载 我必须用一些编码来跟踪这个吗 我正在构建 MVC core 1 1 Web Api 你可以简单地
  • 仅 while 循环的最后一次迭代保存

    我有这个代码 symbolslist 100 200 300 400 500 600 700 800 900 1000 1500 2000 3000 4000 5000 7000 10000 i 0 while i
  • OnHeapColumnVector putLong NullPointerException

    我正在使用spark sql v4 5 0 我必须读取 s3 文件 如下所示 val df sc parallelize Array 2019 01 01 546209022 2018 10 12 2020 05 19 02 17 59 2
  • 如何在一定数量的输出后终止脚本

    我有一个 bash 脚本 它执行一些处理 记录操作 并将其写入文件 它持续运行直到用户终止它 我想要做的是自动终止 连续运行此脚本 直到它将文件填充到用户指定的特定大小或行数 这可能吗 我想不出如何做到这一点 因为如果这个脚本是连续的 我就
  • 如何使用 pymongo 对 mongodb 进行排序

    我尝试在查询 mongoDB 时使用排序功能 但失败了 相同的查询在 MongoDB 控制台中有效 但在这里不行 代码如下 import pymongo from pymongo import Connection connection C
  • iOS canOpenURL 返回 true,但应用程序未安装(facebook)

    目前 我想检查我的应用程序是否安装了 Facebook 应用程序 我在做什么 UIApplication shared canOpenURL URL string fb enter code here 在 URL 方案中 我添加了 fb 所
  • C# 中的静态类有什么优点/缺点?

    我正在为我的学校作业编写一个小游戏 该游戏是一个简单的 2D 游戏 有怪物 物品和子弹 基本上你跑来跑去并试图收集所有的物品硬币 怪物试图阻止你 你可以用你收集的子弹击落它们 很简单 问题是 我已将怪物 物品 墙壁 玩家和子弹添加到名为 L