1


0

私は外部ファイルに保存され、各ゲームの最初にそれからロードされるハイスコアリストを必要とする小さなカードゲームを作っています。

私はこのフォーマットでXMLファイルを書きました:

bob 10 3:42 21-09-09

データセットを作成し、 `dataset.readxml`を使用してXMLをロードし、行を作成してから各行をHighScoresの配列に書き込む方法を考えました。

クラスHighScore {文字列nameString、timeString、dateString; int scoreInt; }

私はまたゲームのハイスコアが配列の中で最も低いものより高いかどうかをチェックする方法を考え出しました。

私はソートの作業をしていますが、 `HighScore []`配列をデータセットに戻してからXMLに戻したり、アレイから直接データセットに戻したりすることができますか。 私はそれをグーグルに試みたが、私は欲しいものを見つけていない。

1 回答


1


あなたは本当にあなたの配列を直列化するために `DataSet`を使う必要がありますか? 配列をシリアル化するだけでよい場合は、単純なXmlシリアル化を使用できます。 これが一例です。

[XmlRoot( "highScore")]パブリッククラスHighScore {[XmlElement( "name")]パブリック文字列Name {get;}セット; [XmlElement( "dateTime")] public DateTime Date {get;};セット; [XmlElement( "score")] public intスコア{取得;}セット; }}

static void Main(string [] args){

IList highScores = new [] {new HighScore {名前= "bob"、日付= DateTime.Now、スコア= 10}、新しいHighScore {名前= "john"、日付= DateTime.Now、スコア= 9}、新しいHighScore {名前= "maria"、日付= DateTime.Now、スコア= 28}};

// XmlSerializer s = new XmlSerializer(typeof(HighScore [])); //配列のシリアル化using(Stream st = new FileStream(@ "c:\ test.xml"、FileMode.Create)){s.Serialize(st、highScores.ToArray()); }

//配列の逆シリアル化HighScore [] highScoresArray; using(Stream st = new FileStream(@ "c:\ test.xml"、FileMode.Open)){highScoresArray =(HighScore [])s.Deserialize(st); }

foreach(highScoresArrayのvar highScore){Console.WriteLine( "{0}、{1}、{2}"、highScore.Name、highScore.Date、highScore.Score); }}