Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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# 将多个属性指定给对象_C#_Xml_List_Dictionary_Xna - Fatal编程技术网

C# 将多个属性指定给对象

C# 将多个属性指定给对象,c#,xml,list,dictionary,xna,C#,Xml,List,Dictionary,Xna,在我的游戏中,它的目标是变得有点像吉他英雄,但是我以前确实做过这个游戏,并且在解析XML时遇到了很多错误。它应该是这样的: <song> <note> <time>1.35</time> <key>A</key> </note> </song> 1.35 A. 然后,我将解析XML文件中的每个“note”属性,并将其排序到包含所有注释的字典中: public Dictio

在我的游戏中,它的目标是变得有点像吉他英雄,但是我以前确实做过这个游戏,并且在解析XML时遇到了很多错误。它应该是这样的:

<song>
  <note>
    <time>1.35</time>
    <key>A</key>
  </note>
</song>

1.35
A.
然后,我将解析XML文件中的每个“note”属性,并将其排序到包含所有注释的字典中:

public Dictionary<int, string> AssortedNotes = new Dictionary<int, string>();
公共词典分类注释=新词典();
然后,我运行一个简单的ForEach语句,根据值将其排序到子分类字典中,例如:

public Dictionary<int, string> ANotes = new Dictionary<int, string>();
public Dictionary<int, string> SNotes = new Dictionary<int, string>();
public Dictionary<int, string> DNotes = new Dictionary<int, string>();

public Dictionary<int, string> JNotes = new Dictionary<int, string>();
public Dictionary<int, string> KNotes = new Dictionary<int, string>();
public Dictionary<int, string> LNotes = new Dictionary<int, string>();
public Dictionary ANotes=new Dictionary();
公共字典SNotes=新字典();
公共字典DNotes=新字典();
公共字典JNotes=新字典();
公共字典KNotes=新字典();
公共词典LNotes=新词典();
然而,这里出现了“dodge”位,我插入了“time”属性作为键,因为如果我将“key”属性设置为键,肯定会出错。我的时间属性纯粹是基于确保每次的时间都不同。现在,我制作的歌曲制作程序产生了一个问题,我必须对XML文件进行排序,并删除其中可能存在的任何重复项,这是一个难题

我知道有更好的方法来做类似的事情,但是我不确定如何做。有人能给我展示一种更好的做事方式吗?然后解释一下是怎么做到的,为什么做到的

非常感谢,,
Jarrod.

我不完全理解的第一件事是,为什么要将时间值存储为
int
?我相信
TimeSpan
会为您提供更好的服务

关于重复项,您实际上不会遍历源文件并手动删除它们。当你试图在C语言的字典中添加副本时,它会抛出一个
ArgumentException
,你可以忽略它

现在开始存储数据。我想象游戏的流程会和《吉他英雄》中的相似。记住这一点,为什么不直接使用
列表
?您是否需要能够根据数据本身(字典提供的功能)从集合中获取数据?我真的不明白你为什么要把数据分成更多的字典,如果你能解释的话,也许我会建议你不这样做

只需创建一个用于存储成对值的类(如果输入数据太多或速度很重要,struct肯定会更好),然后将其存储在
列表中。如果需要拆分,只需在列表中循环并拆分即可。按顺序从集合中获取数据更有意义

如果输入数据不是有序的,您可以使用一些可用的已排序集合,但这确实不是必需的


最后,如果你不了解自己真正需要完成的工作,那么要向正确的方向指出仍然有点困难。

我不会让字典抛出异常,你应该使用Contains方法来检测重复项。非常感谢,你的回答非常有帮助。很抱歉迟了答复。