我試圖從“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 的父類:
{
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;
}
}
這是 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;
}
}
uj5u.com熱心網友回復:
為了訪問型別中的屬性,您應該宣告該型別的變數而不是物件型別,因此您的代碼應該如下所示以便能夠訪問 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
}
}
uj5u.com熱心網友回復:
你必須將一種 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};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314616.html
