Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#对象数据存储在内部vs文件中_C#_Performance_Storage - Fatal编程技术网

C#对象数据存储在内部vs文件中

C#对象数据存储在内部vs文件中,c#,performance,storage,C#,Performance,Storage,我正在做一个有很多物品的游戏。我想知道在我的程序内部存储对象数据或者从文件中加载项目列表是否更有效 示例 [内部]: Item sword = new Item(); sword.Damage = 40f; sword.Value = 100; Weapons.add(sword); [外部] items.txt name:sword damage:40 value:100 LoadItems("items.txt"); 有一个想法是,将对象数据存储在文件中可能意味着玩家可能会篡改

我正在做一个有很多物品的游戏。我想知道在我的程序内部存储对象数据或者从文件中加载项目列表是否更有效

示例
[内部]:

Item sword = new Item();
sword.Damage = 40f;
sword.Value = 100;
Weapons.add(sword);
[外部]
items.txt

name:sword
damage:40  
value:100

LoadItems("items.txt");  

有一个想法是,将对象数据存储在文件中可能意味着玩家可能会篡改或损坏文件,在IDE中添加新对象会更容易。一个比另一个效率高吗?

A.存储在内存中

优点:

  • 快速性能
  • 验证更少
  • 缺点:

  • 若数据太大,应用程序将消耗大量内存
  • 应用程序崩溃时数据丢失
  • B.存储在文件中

    优点:

  • 减少了对数据大小的担忧。若数据增长,应用程序几乎不会面临内存问题
  • 如果应用程序崩溃,您可以从文件中获取数据。(如果文件未损坏)
  • 缺点:

  • 添加验证
  • 从文件读取和解析
  • 在进程中添加异常处理

  • 这里的主要因素是数据大小。如果它很小,请保存在内存中。如果它很大,请将其保存在文件中。

    通常数据应该存储在程序之外(而不是硬编码),除了@Jigneshk所说的问题(这些都是很好的指南),硬编码数据将使游戏内容的开发变得更困难(例如,你必须对游戏中的每把剑进行编码),而外部文件可能很容易增长(即使使用相同的程序,如更新或修改)在内容中,因此我建议将所有游戏内容(统计数据等)放在单独的文件中(检查XML或JSON等结构化文件,即使是sqlite数据库也可以工作)


    但当然要记住,存储速度较慢(因此在使用之前必须先加载),而且不应读取所有数据,而应加载所需的数据块(例如一个级别)

    …正如您所指出的,这两种方法都有很多优点和缺点-实际上,您可以决定哪种方法更适合特定项目。旁注:从安全角度来看,代码和数据存储在用户机器上时没有太大区别。