C# 是否可以在一个列表中存储字符串和int?

C# 是否可以在一个列表中存储字符串和int?,c#,xna,C#,Xna,我想列一张分数表。此外,孩子的名字也应该保存在该列表中。将分数和名称添加到列表后,将对列表进行排序,使最低分数成为列表中的第一个条目。但我总是收到这样的错误信息: 使用泛型类型“System.Collections.generic.List”需要1 类型参数 怎么了?不能在一个列表中存储姓名和分数吗?我应该换什么 SpriteFont Scores; Random random = new Random(); List<string> NamesList = new List<

我想列一张分数表。此外,孩子的名字也应该保存在该列表中。将分数和名称添加到列表后,将对列表进行排序,使最低分数成为列表中的第一个条目。但我总是收到这样的错误信息:

使用泛型类型“System.Collections.generic.List”需要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);
}
SpriteFont评分;
随机=新随机();
列表名称列表=新列表();
列表名称和点列表=新列表();
受保护的覆盖void LoadContent()
{
spriteBatch=新spriteBatch(图形设备);
分数=Content.Load(“Arial”);
名称列表。添加(“Veronica”);
名称列表。添加(“迈克尔”);
名称列表。添加(“克里斯蒂娜”);

对于(int j=0;j来说,定义是List,它确实需要一种类型

但是,是什么阻止您定义该类型呢

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

var users = List<User>();
公共结构用户
{
公共字符串名称{get;set;}
公共整数分数{get;set;}
}
var users=List();
或者如果您不想定义类

var users = List<Tuple<string, int>>();
var users=List();
但是,如果您只是想要一个可以容纳多种类型实例的列表
没有任何东西可以阻止您使用“ArrayList”或对象列表。尽管我会避免这样做。

定义是List,它确实需要单一类型

但是,是什么阻止您定义该类型呢

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

var users = List<User>();
公共结构用户
{
公共字符串名称{get;set;}
公共整数分数{get;set;}
}
var users=List();
或者如果您不想定义类

var users = List<Tuple<string, int>>();
var users=List();
但是,如果您只是想要一个可以容纳多种类型实例的列表
没有什么可以阻止您使用“ArrayList”或对象列表。尽管我会避免使用它。

您可以使用
元组,创建自己的
对象,或者使用一个,这对于您尝试执行的操作非常理想。
字典
在这种情况下比
列表
更有效,因为它可以轻松地执行查找

字典
类型提供了快速查找键以获取值。使用它,我们可以使用任何类型的键和值,包括int和字符串

Dictionary<string,int> Users = new Dictionary<string,int>();
现在你可能想要得到迈克尔的分数,你可以通过这样做很快找到它

 int Score = Users["Michael"];

我也不认为有必要有一个
名称
名称和点
列表,你可以只使用一个。

你可以使用
元组
,创建你自己的
对象
,或者使用一个,这对于你想要做的事情来说非常理想。
字典
在这种情况下比
列表
更有效,因为它可以轻松地执行查找

字典
类型提供了快速查找键以获取值。使用它,我们可以使用任何类型的键和值,包括int和字符串

Dictionary<string,int> Users = new Dictionary<string,int>();
现在你可能想要得到迈克尔的分数,你可以通过这样做很快找到它

 int Score = Users["Michael"];

我也不认为有必要有一个
名称
名称和点数
列表,你可以只使用一个。

如果你将
列表
声明为
列表
,这是可能的,但是你正在做的事情听起来像是想要一本字典,而不是你应该使用
字典
,它将更快速、更容易地在这种情况与将列表与您自己的
对象
元组
相比较,如果您将
列表
声明为
列表
,则是可能的,但由于您正在做的事情听起来像是想要一本词典,而不是您应该使用
词典
,因此在这种情况下使用起来会更快、更容易与将列表与您自己的
对象
元组
一起使用相比,我同意,字典是更好的解决方案。没有包括这一点,因为问题标题在列表中同时存储字符串和int,但您是对的。因此@Tommy,您应该将此作为anwserI同意,字典是更好的解决方案。没有包括t因为问题标题在列表中同时存储了字符串和int,但是您是正确的