我有一个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]。
然后我需要一种方法来比较游戏中吃掉的对象的答案..
答案 0 :(得分:2)
假设您在每个班级override the ToString method.
中有某种Orange
个对象,某种Pear
个对象和某种Apple
个对象
如果您有一些通用的Fruit
或Answer
对象,请考虑在构造函数中传递一个字符串,并在ToString
方法中返回该字符串。
编辑:既然你现在已经澄清了,我会想到Jonathan的想法是拥有Name
或Answer
财产;那么你可以这样做:
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,以及答案是对的。