从对象数组访问 属性 值 c#
Accessing property value from an array of objects c#
我试图从“BaseBallPlayer”对象数组中找到薪水最高的“球员”。我知道我需要遍历数组并将薪水属性与“if”语句进行比较。但是,我似乎无法弄清楚如何从数组中的对象访问特定的 属性。
这是我的 main() 的一个片段:
static void Main(string[] args)
{
BasketBallPlayer basketBP1 = new BasketBallPlayer("Jeff", 24, 30000.00, 12.2, 6, 7, 8);
BasketBallPlayer basketBP2 = new BasketBallPlayer("Jim", 27, 35000, 18, 5, 17, 9);
BasketBallPlayer basketBP3 = new BasketBallPlayer("James", 32, 65000, 34, 87, 15, 12);
object[] BasketBT = new object[] {basketBP1, basketBP2, basketBP3 };
BaseBallPlayer baseBP1 = new BaseBallPlayer("Craig", 26, 53000, 53, 12, 9);
BaseBallPlayer baseBP2 = new BaseBallPlayer("Chris", 35, 66000, 67, 19, 7);
BaseBallPlayer baseBP3 = new BaseBallPlayer("Charlie", 32, 75000, 87, 23, 4);
object[] BaseBT = new object[] { baseBP1, baseBP2, baseBP3 };
foreach (object player in BaseBT)
{
}
}
这是 BaseBallPlayer 的父 class:
{
protected int age { get; set; }
protected string name { get; set; }
public double salary { get; set; }
public sportsPlayer(string Name, int Age, double Salary)
{
this.name = Name;
this.age = Age;
this.salary = Salary;
}
public override string ToString()
{
string details = string.Format("Name: {0} \n Age: {1} \n Salary: {2} \n ", this.name, this.age, this.salary);
return details;
}
}
这里是 class BaseBallPlayer:
class BaseBallPlayer: sportsPlayer
{
double battingAverage { get; set; }
int homeRuns { get; set; }
int errors { get; set; }
public BaseBallPlayer(string Name, int Age, double Salary, double BattingAverage, int HomeRuns, int Errors): base(Name, Age, Salary)
{
this.battingAverage = BattingAverage;
this.homeRuns = HomeRuns;
this.errors = Errors;
}
public override string ToString()
{
string details = string.Format("Batting Average: {0} \n Home Runs: {1} \n Errors: {2} \n", this.battingAverage, this.homeRuns, this.errors);
return base.ToString() + details;
}
}
为了访问类型中的属性,您应该声明该类型的变量而不是对象类型,因此您的代码应该如下所示才能访问 player.salary :
static void Main(string[] args)
{
BasketBallPlayer basketBP1 = new BasketBallPlayer("Jeff", 24, 30000.00, 12.2, 6, 7, 8);
BasketBallPlayer basketBP2 = new BasketBallPlayer("Jim", 27, 35000, 18, 5, 17, 9);
BasketBallPlayer basketBP3 = new BasketBallPlayer("James", 32, 65000, 34, 87, 15, 12);
sportsPlayer[] BasketBT = new object[] {basketBP1, basketBP2, basketBP3 };
BaseBallPlayer baseBP1 = new BaseBallPlayer("Craig", 26, 53000, 53, 12, 9);
BaseBallPlayer baseBP2 = new BaseBallPlayer("Chris", 35, 66000, 67, 19, 7);
BaseBallPlayer baseBP3 = new BaseBallPlayer("Charlie", 32, 75000, 87, 23, 4);
sportsPlayer[] BaseBT = new object[] { baseBP1, baseBP2, baseBP3 };
foreach (sportsPlayer player in BaseBT)
{
// here you can access player.salary
}
}
您必须将一种 BaseBT 修复为 BaseBallPlayer[]
BaseBallPlayer[] BaseBT = new BaseBallPlayer[] { baseBP1, baseBP2, baseBP3 };
顶薪球员
var playerMaxSalary= BaseBT.OrderByDescending(b=>b.salary).FirstOrDefault();
结果
Name: Charlie
Age: 32
Salary: 75000
Batting Average: 87
Home Runs: 23
Errors: 4
测试
foreach (var player in BaseBT)
{
Console.WriteLine(player.ToString());
}
结果:
Name: Craig
Age: 26
Salary: 53000
Batting Average: 53
Home Runs: 12
Errors: 9
Name: Chris
Age: 35
Salary: 66000
Batting Average: 67
Home Runs: 19
Errors: 7
Name: Charlie
Age: 32
Salary: 75000
Batting Average: 87
Home Runs: 23
Errors: 4
如果将 BaseBT 定义为 BaseBallPlayer 的列表,您将获得相同的结果
List<BaseBallPlayer> BaseBT = new List<BaseBallPlayer> { baseBP1, baseBP2, baseBP3};
我试图从“BaseBallPlayer”对象数组中找到薪水最高的“球员”。我知道我需要遍历数组并将薪水属性与“if”语句进行比较。但是,我似乎无法弄清楚如何从数组中的对象访问特定的 属性。
这是我的 main() 的一个片段:
static void Main(string[] args)
{
BasketBallPlayer basketBP1 = new BasketBallPlayer("Jeff", 24, 30000.00, 12.2, 6, 7, 8);
BasketBallPlayer basketBP2 = new BasketBallPlayer("Jim", 27, 35000, 18, 5, 17, 9);
BasketBallPlayer basketBP3 = new BasketBallPlayer("James", 32, 65000, 34, 87, 15, 12);
object[] BasketBT = new object[] {basketBP1, basketBP2, basketBP3 };
BaseBallPlayer baseBP1 = new BaseBallPlayer("Craig", 26, 53000, 53, 12, 9);
BaseBallPlayer baseBP2 = new BaseBallPlayer("Chris", 35, 66000, 67, 19, 7);
BaseBallPlayer baseBP3 = new BaseBallPlayer("Charlie", 32, 75000, 87, 23, 4);
object[] BaseBT = new object[] { baseBP1, baseBP2, baseBP3 };
foreach (object player in BaseBT)
{
}
}
这是 BaseBallPlayer 的父 class:
{
protected int age { get; set; }
protected string name { get; set; }
public double salary { get; set; }
public sportsPlayer(string Name, int Age, double Salary)
{
this.name = Name;
this.age = Age;
this.salary = Salary;
}
public override string ToString()
{
string details = string.Format("Name: {0} \n Age: {1} \n Salary: {2} \n ", this.name, this.age, this.salary);
return details;
}
}
这里是 class BaseBallPlayer:
class BaseBallPlayer: sportsPlayer
{
double battingAverage { get; set; }
int homeRuns { get; set; }
int errors { get; set; }
public BaseBallPlayer(string Name, int Age, double Salary, double BattingAverage, int HomeRuns, int Errors): base(Name, Age, Salary)
{
this.battingAverage = BattingAverage;
this.homeRuns = HomeRuns;
this.errors = Errors;
}
public override string ToString()
{
string details = string.Format("Batting Average: {0} \n Home Runs: {1} \n Errors: {2} \n", this.battingAverage, this.homeRuns, this.errors);
return base.ToString() + details;
}
}
为了访问类型中的属性,您应该声明该类型的变量而不是对象类型,因此您的代码应该如下所示才能访问 player.salary :
static void Main(string[] args)
{
BasketBallPlayer basketBP1 = new BasketBallPlayer("Jeff", 24, 30000.00, 12.2, 6, 7, 8);
BasketBallPlayer basketBP2 = new BasketBallPlayer("Jim", 27, 35000, 18, 5, 17, 9);
BasketBallPlayer basketBP3 = new BasketBallPlayer("James", 32, 65000, 34, 87, 15, 12);
sportsPlayer[] BasketBT = new object[] {basketBP1, basketBP2, basketBP3 };
BaseBallPlayer baseBP1 = new BaseBallPlayer("Craig", 26, 53000, 53, 12, 9);
BaseBallPlayer baseBP2 = new BaseBallPlayer("Chris", 35, 66000, 67, 19, 7);
BaseBallPlayer baseBP3 = new BaseBallPlayer("Charlie", 32, 75000, 87, 23, 4);
sportsPlayer[] BaseBT = new object[] { baseBP1, baseBP2, baseBP3 };
foreach (sportsPlayer player in BaseBT)
{
// here you can access player.salary
}
}
您必须将一种 BaseBT 修复为 BaseBallPlayer[]
BaseBallPlayer[] BaseBT = new BaseBallPlayer[] { baseBP1, baseBP2, baseBP3 };
顶薪球员
var playerMaxSalary= BaseBT.OrderByDescending(b=>b.salary).FirstOrDefault();
结果
Name: Charlie
Age: 32
Salary: 75000
Batting Average: 87
Home Runs: 23
Errors: 4
测试
foreach (var player in BaseBT)
{
Console.WriteLine(player.ToString());
}
结果:
Name: Craig
Age: 26
Salary: 53000
Batting Average: 53
Home Runs: 12
Errors: 9
Name: Chris
Age: 35
Salary: 66000
Batting Average: 67
Home Runs: 19
Errors: 7
Name: Charlie
Age: 32
Salary: 75000
Batting Average: 87
Home Runs: 23
Errors: 4
如果将 BaseBT 定义为 BaseBallPlayer 的列表,您将获得相同的结果
List<BaseBallPlayer> BaseBT = new List<BaseBallPlayer> { baseBP1, baseBP2, baseBP3};