C# structures/classes/lists 索引
C# structures/classes/lists index
我目前正在学习 C#,我被要求在 C 上制作一个游戏,比如 monopoly,在 C# 上制作另一个版本。但是在 C# 上有一些我不太理解的东西,主要是因为它是一种面向对象的语言。所以问题是,为了管理玩家,我在 C 版本上创建了一个结构。
typedef struct regist
{
int number;
char name[50];
int money;
int position;
int inGame;
} Player;
Player players[8];
并获取我刚刚执行的结构的任何数据:
players[5].name = "Joe";
现在,我的 C# 问题是我设法创建了 "struct"。首先我创建了一个结构。然后我试着用一个结构列表来制作它。然后我决定为每个玩家创建一个 class 的新实例。有人告诉我这是最好的方法,所以我就这么做了。所以我的播放器上有 class:
public class Players
{
int number;
string name;
int money;
int position;
bool inGame;
}
在我的表格 1 上:
private void newGameButton_Click(object sender, EventArgs e)
{
设置名称();
获取名称();
}
public void setNames()
{
Players player1 = new Players();
player1.name= textBox1.Text;
Players player2 = new Players();
player2.name = textBox2.Text;
Players player3 = new Players();
player3.name = textBox3.Text;
Players player4 = new Players();
player4.name = textBox4.Text;
}
现在我不知道该怎么做:
public string getNames(){
return Players[2].name;
}
我怎样才能做到这一点?我也尝试过使用列表,但它不会让我按照我想要的方式来做,而且,我希望能够在其他 classes 中使用相同的实例,我希望这是可能的......
谢谢。
一旦你有了 List<Players>
,你需要实际将你的实例添加到 list.Then 你可以按预期索引:
private List<Players> allPlayers = new List<Players>();
public void setNames()
{
Players player1 = new Players();
player1.name= textBox1.Text;
Players player2 = new Players();
player2.name = textBox2.Text;
Players player3 = new Players();
player3.name = textBox3.Text;
Players player4 = new Players();
player4.name = textBox4.Text;
allPlayers.Add(player1);
allPlayers.Add(player2);
allPlayers.Add(player3);
allPlayers.Add(player4);
}
现在您可以在您的其他代码中将其作为 allPlayers[2]
或任何其他索引访问。
样式说明,您的 class 应该命名为 Player
而不是 Players
。 Player
是一个对象,Players
表示 属性 个 Player
个对象的集合。
创建时class 使用属性
public class Players
{
public int number{get;set;}
public string name{get;set;}
public int money{get;set;}
public int position { get; set; }
public bool inGame { get; set; }
public string getNames(){
return name;
}
}
并在创建其对象时
public Players[] p = new Players[5];
可以完成作业
p[0].name = textBox1.Text;
p[1].name = textBox2.Text;
p[2].name = textBox3.Text;
p[3].name = textBox4.Text;
p[4].name = textBox5.Text;
现在,如果可以从任何地方访问对象 p,那么您肯定可以
p[2].getNames();
这样做。
或
使用列表
List<Players> pList = new List<Players>();
Players p1 = new Players();
p1.name="abc";
pList.add(p1);
Players p2 = new Players();
p2.name="xyz";
pList.add(p2);
如果 pList 可访问,则再次
public string getNames(){
return pList[0].name;
}
我目前正在学习 C#,我被要求在 C 上制作一个游戏,比如 monopoly,在 C# 上制作另一个版本。但是在 C# 上有一些我不太理解的东西,主要是因为它是一种面向对象的语言。所以问题是,为了管理玩家,我在 C 版本上创建了一个结构。
typedef struct regist
{
int number;
char name[50];
int money;
int position;
int inGame;
} Player;
Player players[8];
并获取我刚刚执行的结构的任何数据:
players[5].name = "Joe";
现在,我的 C# 问题是我设法创建了 "struct"。首先我创建了一个结构。然后我试着用一个结构列表来制作它。然后我决定为每个玩家创建一个 class 的新实例。有人告诉我这是最好的方法,所以我就这么做了。所以我的播放器上有 class:
public class Players
{
int number;
string name;
int money;
int position;
bool inGame;
}
在我的表格 1 上:
private void newGameButton_Click(object sender, EventArgs e) { 设置名称(); 获取名称(); }
public void setNames()
{
Players player1 = new Players();
player1.name= textBox1.Text;
Players player2 = new Players();
player2.name = textBox2.Text;
Players player3 = new Players();
player3.name = textBox3.Text;
Players player4 = new Players();
player4.name = textBox4.Text;
}
现在我不知道该怎么做:
public string getNames(){
return Players[2].name;
}
我怎样才能做到这一点?我也尝试过使用列表,但它不会让我按照我想要的方式来做,而且,我希望能够在其他 classes 中使用相同的实例,我希望这是可能的...... 谢谢。
一旦你有了 List<Players>
,你需要实际将你的实例添加到 list.Then 你可以按预期索引:
private List<Players> allPlayers = new List<Players>();
public void setNames()
{
Players player1 = new Players();
player1.name= textBox1.Text;
Players player2 = new Players();
player2.name = textBox2.Text;
Players player3 = new Players();
player3.name = textBox3.Text;
Players player4 = new Players();
player4.name = textBox4.Text;
allPlayers.Add(player1);
allPlayers.Add(player2);
allPlayers.Add(player3);
allPlayers.Add(player4);
}
现在您可以在您的其他代码中将其作为 allPlayers[2]
或任何其他索引访问。
样式说明,您的 class 应该命名为 Player
而不是 Players
。 Player
是一个对象,Players
表示 属性 个 Player
个对象的集合。
创建时class 使用属性
public class Players
{
public int number{get;set;}
public string name{get;set;}
public int money{get;set;}
public int position { get; set; }
public bool inGame { get; set; }
public string getNames(){
return name;
}
}
并在创建其对象时
public Players[] p = new Players[5];
可以完成作业
p[0].name = textBox1.Text;
p[1].name = textBox2.Text;
p[2].name = textBox3.Text;
p[3].name = textBox4.Text;
p[4].name = textBox5.Text;
现在,如果可以从任何地方访问对象 p,那么您肯定可以
p[2].getNames();
这样做。
或
使用列表
List<Players> pList = new List<Players>();
Players p1 = new Players();
p1.name="abc";
pList.add(p1);
Players p2 = new Players();
p2.name="xyz";
pList.add(p2);
如果 pList 可访问,则再次
public string getNames(){
return pList[0].name;
}