我卡住了,我需要帮助。无论如何,我有Visual Studio 2008控制台程序需要为游戏的每一轮记录日期,字符串,布尔值和整数。说用户打10轮,我会有10个。收藏夹问题(.NET 3.5,C#)
我想通过他们保存在数据结构中的那些记录(收集我相信),然后比赛结束后循环产生一个简单的控制台报告。
我被卡住了。这看起来很简单,但我找不到解决方案。我想有很多方法可以实现这一点,但我正在寻找最简单的解决方案。
我卡住了,我需要帮助。无论如何,我有Visual Studio 2008控制台程序需要为游戏的每一轮记录日期,字符串,布尔值和整数。说用户打10轮,我会有10个。收藏夹问题(.NET 3.5,C#)
我想通过他们保存在数据结构中的那些记录(收集我相信),然后比赛结束后循环产生一个简单的控制台报告。
我被卡住了。这看起来很简单,但我找不到解决方案。我想有很多方法可以实现这一点,但我正在寻找最简单的解决方案。
编辑:我想简化这个问题的答案,但也许我简化太多。我已经改变了下面的可变结构(这是一个坏主意,感谢提醒我@Jon Skeet),还有一个类和属性。
首先,创建的数据类型来保持信息:
public class RoundInformation
{
public DateTime Date { get; set; }
public String Name { get; set; }
public Boolean DidCheat { get; set; }
}
然后创建该列表以将其保持:
public List<RoundInformation> Rounds = new List<RoundInformation>();
然后,对于每个圆,构建具有一个值全面的信息数据,并将其添加到列表:
RoundInformation info = new RoundInformation();
info.Date = DateTime.Now;
info.Name = "Bob";
info.DidCheat = true; // Bob always cheats
Rounds.Add(info);
要遍历:
foreach (RoundInformation round in Rounds)
{
.. dump to console, left as an excercise
}
试试这个:
public class GameRound {
public DateTime Date {get; set;}
public string String {get; set;}
public bool Boolean { get; set;}
public int Integer { get; set; }
}
在一个部分,用正确的变量名。
然后,在你的控制台程序,在顶部加入下面一行:
List<GameRound> rounds = new List<GameRound>();
这使得一个回合的“清单”,它可以被添加到,删除,并通过“循环”。
然后,当你想添加一个回合,使用这样的代码:
rounds.Add(new GameRound { Date = theDate, String = theString, Boolean = theBool, Integer = theInt });
这使得新GameRound
对象,并设置所有的属性值。请记住用日期等替换正确的名称/值。
最后,生成报表,试试这个:
foreach (GameRound round in rounds) {
Console.WriteLine("Date: {0}\nString: {1}\nBoolean: {2}\nInteger: {3}", round.Date, round.String, round.Boolean, round.Integer);
}
我想你会成为一个更具体一点,以你正在尝试做的。一般来说,您需要一个数据结构来保存Date,String,Boolean和Integer。您可以使用Struct或自定义类来执行此操作。您也可以使用匿名类型,但这是一个高级概念,您可能想远离。
所以,这些元素之一添加到您的收藏,你只是做:
myCollection.Add(myNewLogElement);
要遍历此集合,你这样做:
foreach (MyLogElementType logElement in myCollection
{
' do something...
}
我希望这有助于。如果你需要更好的答案,你需要更具体地了解你在做什么。
祝你好运。
我会开始说,面向对象的答案更好......但你确实要求最简单的解决方案。
首先制作一个新的集合:
List<string> log = new List<string>();
当你想登录的东西:那么,在年底
log.Add(string.Format("Date = {0}, String = {1}, Boolean = {3}, and an integer = {4}", theDate, theString, theBool, theInt);
:
foreach(string logEntry in log) Console.WriteLine(logEntry);
更多的3.0的开发。
public class GameRound{
public DateTime Date { get; set; }
public String Name { get; set; }
public Boolean DidCheat { get; set; }
public void Print()
{
Console.WriteLine(String.Format("Date:{0}, Name:{1}, Cheated: {2}", Date, Name, DidCheat));
}
}
public class GameRounds : List<GameRound>{
public void Add(DateTime date, string name, bool didCheat) {
this.Add(new GameRound { Date = date, Name = name, DidCheat = didCheat });
}
}
public static void Play(){
var gameRounds = new GameRounds();
//Round 1
gameRounds.Add(DateTime.Today, "ABC", false);
//Round 2
gameRounds.Add(DateTime.Today, "DEF", true);
//Print
foreach (var gameRound in gameRounds)
{
gameRound.Print();
}
}
+1,你输入疯狂快。 – Brandon 2009-07-23 21:25:08
我有一个高速网络连接到我的大脑。我根本不打字。 – 2009-07-23 21:27:24
+1在问题出现之前,您一定已经准备好了这个答案; o) – 2009-07-23 21:27:32