0

スコアのリストを作成したいと思います。さらに、子供の名前もそのリストに保存する必要があります。リストにスコアと名前を追加した後、最低スコアがリストの最初のエントリになるようにリストがソートされます。しかし、私はいつもこのエラーメッセージを受け取ります:

ジェネリック型 'System.Collections.Generic.List' を使用するには、1 つの型引数が必要です

なにが問題ですか?名前とスコアを 1 つのリストに保存することはできませんか? 何を変更すればよいですか?

SpriteFont Scores;
Random random = new Random();
List<string> NamesList = new List<string>();
List<string,int> NamesAndPointsList = new List<string,int>();

protected override void LoadContent()
{
  spriteBatch = new SpriteBatch(GraphicsDevice);
  Scores = Content.Load<SpriteFont>("Arial");

  NamesList.Add("Veronica");
  NamesList.Add("Michael");
  NamesList.Add("Christina");

  for (int j = 0; j <= NamesList.Count - 1; j++)
  {
    int Points = random.Next(101);
    NamesAndPointsList.Add(NamesList[j],Points);
  }
  NamesAndPointsList.Sort();
}
protected override void Draw(GameTime gameTime)
{
  GraphicsDevice.Clear(Color.CornflowerBlue);
  spriteBatch.DrawString(Scores, NamesAndPointsList[0].ToString() + ";" + NamesAndPointsList[1].ToString() + ";" + NamesAndPointsList[2].ToString(), new Vector2(200, 200), Color.White);

        base.Draw(gameTime);
}
4

2 に答える 2

4

定義は、確かに単一の型を必要とする List です。

しかし、そのタイプを定義することを妨げているのは何ですか?

public struct User
{
   public string Name { get; set;}
   public int Score { get; set;}
}

var users = List<User>();

または、クラスを定義したくない場合

var users = List<Tuple<string, int>>();

ただし、単に複数の型のインスタンスを保持できるリストが必要な場合は、「ArrayList」またはオブジェクトのリストを使用することを妨げるものは何もありません..私はそれを避けますが.

于 2013-04-20T18:25:34.003 に答える
2

を使用したりTuple、独自の を作成したり、目的に最適なDictionaryObjectを使用したりできます。この状況では、検索を簡単に実行できるため、 a よりもa のがうまく機能します。DictionaryList

このDictionary型は、値を取得するためのキーを使用した高速ルックアップを提供します。これにより、int や文字列を含むあらゆるタイプのキーと値を使用できます。

Dictionary<string,int> Users = new Dictionary<string,int>();

基本的に、であるキーstringユーザー名であり、であるintスコアです。

新しいユーザーを追加するには、これを行うことができます

 Users.Add("Michael",0); //Create new user named Michael, who starts with 0 points

マイケルスコアを取得したい場合は、これを行うことですばやく見つけることができます

 int Score = Users["Michael"];

Namesまた、 andNameAndPointsリストを使用する必要はないと思います。1 つだけを使用できます。

于 2013-04-20T20:20:24.033 に答える