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

本文关键字:对象 比较 XNA 字符串 | 更新日期: 2023-09-27 17:55:23

我有一个XML文件,它使用管道"|"进行拆分。我在一个问题类中有一些代码,它拆分了XML文件"项目",如下所示。

 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

编辑:为了澄清事情...

我有三个对象,分别是苹果、梨和橙色,我想将这些对象与字符串的每个组件的 XML 文件中显示的字符串相关联。问题字符串显示一个问题,[1

] 答案 1,[2] 答案 2,[3] 答案 [3]。

然后我需要一种方法来比较游戏中吃掉的物体的答案。

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

假设每个类中都有某种Orange对象、某种Pear对象和某种Apple对象,则覆盖 ToString 方法。

如果有一些泛型Fruit或对象Answer请考虑在构造函数中传递字符串,并在 ToString 方法中返回该字符串。

编辑:既然你现在已经澄清了,我会同意乔纳森的想法,拥有NameAnswer财产;然后你可以做:

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

并且 ToString 不会将对象转换为字符串。它只是为对象返回一个用户定义的(如果您选择覆盖)字符串 - 对于 Int,它是"42",对于布尔值,它是"true"或"false"。不发生转换。

根据您的编辑,听起来您要做的就是能够根据从数据文件中获取的字符串查找一些具体对象?您不能为此使用字典吗,例如:

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.
}

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

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

public enum AnswerType
{
  Apple,
  Pear,
  Banana
}

将答案存储在字典中,将 id 映射到答案(将枚举转换为键的 int),加上正确答案的 id,现在您可以知道每次都选择了哪个答案,检查吃过的水果的 id,以及答案是否正确。