将字符串与c#/ XNA中的对象进行比较

时间:2011-05-06 14:46:16

标签: xna c# xml

我有一个XML文件,它使用管道“|”拆分。我在一个问题类中有一些代码将XML文件“Items”拆分为......

 List<string> questionComponents = newquestionString.Split('|').ToList<string>();

        questionString = questionComponents[0];
        apple = questionComponents[1];
        pear = questionComponents[2];
        orange = questionComponents[3];

        correctAnswer = Int32.Parse(questionComponents[4]);

我想将这些组件与我的Game1类中实例化的对象进行比较(三个水果 - 苹果,梨,橙色)。那我该怎么做?

一位朋友帮助我做到了这一点。我不知道如何做到这一点,在搜索谷歌没有运气后,我已经在这里问你可爱的人。

提前致谢:D

编辑:要清理......

我有三个名为apple,pear和orange的对象,我想将这些对象与字符串中每个组件的XML文件中显示的字符串相关联。问题字符串显示一个问题,[1]答案1,[2]答案2,[3]答案[3]。

然后我需要一种方法来比较游戏中吃掉的对象的答案..

3 个答案:

答案 0 :(得分:2)

假设您在每个班级override the ToString method.

中有某种Orange个对象,某种Pear个对象和某种Apple个对象

如果您有一些通用的FruitAnswer对象,请考虑在构造函数中传递一个字符串,并在ToString方法中返回该字符串。

编辑:既然你现在已经澄清了,我会想到Jonathan的想法是拥有NameAnswer财产;那么你可以这样做:

if(object.Answer == questionComponent)
//do stuff

ToString不会将对象转换为字符串。它只返回用户定义的(如果你选择覆盖)对象的字符串 - 对于Ints它是“42”,对于bools它是“true”或“false”。没有转换。

答案 1 :(得分:1)

根据您的编辑,听起来就像你想要做的一样,能够根据你从数据文件中获得的字符串查找一些具体对象吗?你不能使用Dictionary,如:

Fruit apple = new Apple();
Fruit orange = new Orange();

Dictionary<string,Fruit> map = new Dictionary<string,Fruit>();
map["apple"] = apple;
map["orange"] = orange;

然后您可以获得用户的回答/输入:

string input = ...
Fruit result;
if(map.TryGetValue(input, out result)) {
  // `fruit` now holds the fruit object the user selected.
} else {
  // User input did not correspond to a known fruit.
}

但我仍然不相信我正确理解你的问题。

答案 2 :(得分:0)

看起来可能的字符串范围是有限的,那么为什么不只使用Enums形式的标识符,您可以从字符串中解析它,并将该标识符设置为答案和结果?

public enum AnswerType
{
  Apple,
  Pear,
  Banana
}

将答案存储在字典中,将ids映射到答案(将密钥的枚举转换为int),加上正确答案的ID,现在您可以知道每次选择的答案,检查已吃水果的ID,以及答案是对的。

相关问题