我卡住了,我需要幫助。無論如何,我有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