我正在制作一个 .net 控制台应用程序,它是一个 Arena Discord 机器人,在机器人启动时,将从 JSON 文件加载大量字符数据(我正在移植 Unity 应用程序,这与所有 ScriptableObject 相关)数据)。现在,我只想将此字符数据保留在内存中,直到最终将其移动到数据库。我想知道在控制台应用程序中存储此类全局数据时的最佳实践是什么。在查看示例代码时,我看到了公共类的示例,其中包含存储数据的静态变量和检索数据的静态方法。这是我计划做的一个例子。这是典型的方法吗?
public sealed class CharacterData
{
private static List<Character> characters = new();
public static void AddCharacterData(Character character)
{
characters.Add(character);
}
public static Character GetCharacterData(Guid guid)
{
return characters.Find(x => x.id == guid);
}
}
public class Character
{
public Guid id = Guid.NewGuid();
public string myName = "";
public int level = 1;
}
它是这样工作的,我只是在寻找最佳实践建议。
对于一个小项目来说,这可能没问题。您只是使用静态字段“记忆”数据。
如果这种情况可能会增长,则需要考虑各种问题:
Find
会很慢。考虑使用类似字典的结构,以便查找时间不取决于有多少个字符。id
设为公共字段,代码可以更改 ID。如果您以按 ID 索引的方式存储字符数据(如字典),则集合可能与内部项目的 ID 不同步。使用属性将允许您明确其他类允许更改哪些值。使用构造函数和 readonly
字段或仅获取属性可以防止某些值在构造对象后发生更改。