是否有可能在一个列表中存储字符串和整型类型?
本文关键字:字符串 存储 整型 类型 列表 一个 有可能 是否 | 更新日期: 2023-09-27 18:10:05
我想做一个分数列表。此外,孩子的名字也应该保存在该列表中。将分数和名字添加到列表后,将对列表进行排序,以便最低分数是列表中的第一个条目。但是我总是得到这个错误信息:
使用泛型类型"System.Collections.Generic"。列表要求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);
}
定义为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 '或List of object..不过我会尽量避免。
您可以使用Tuple
,创建您自己的Object
,或者使用Dictionary,这对于您正在尝试做的事情是理想的。在这种情况下,Dictionary
将比List
更好地工作,因为它可以很容易地执行查找。
Dictionary
类型提供了快速查找键来获取值。有了它,我们可以使用任何类型的键和值,包括整型和字符串。
Dictionary<string,int> Users = new Dictionary<string,int>();
基本上,键是string
,是用户名,值是int
,是分数。
要添加一个新用户,可以这样做
Users.Add("Michael",0); //Create new user named Michael, who starts with 0 points
现在你可能想要得到Michael的分数,你可以通过执行以下命令快速找到它
int Score = Users["Michael"];
我也不认为有必要有一个Names
和NameAndPoints
列表,你可以只用一个。