Piz*_*uru 2 c# inheritance list parent
我希望我的Player对象继承锦标赛中的筹码总和.我得到了(尝试除以零.)我认为这是因为它无法从父级Tournament对象继承Chips.为什么这不起作用?
public partial class Form1 : Form
{
public Tournament Tournament { get; set; }
public Form1()
{
InitializeComponent();
Tournament = new Tournament();
Tournament.PlayerList.Add(new Player("Hero", 5000));
Tournament.PlayerList.Add(new Player("Villain1", 3000));
Tournament.PlayerList.Add(new Player("Villain2", 4000));
MessageBox.Show(Tournament.PlayerList[0].StackPercentage.ToString());
}
}
public class Tournament
{
public List<Player> PlayerList { get; set; }
public int Chips
{
get
{
return PlayerList.Sum(S => S.Stack);
}
}
public Tournament()
{
PlayerList = new List<Player>();
}
}
public class Player : Tournament
{
public string ID { get; set; }
public int Stack { get; set; }
public double StackPercentage
{
get
{
return Stack / Chips;
}
}
public Player(string _ID, int _Stack)
{
ID = _ID;
Stack = _Stack;
}
}
Run Code Online (Sandbox Code Playgroud)
你不应该从锦标赛中派出玩家.通过这样做,你说每个玩家都是一个锦标赛.
尝试这样的事情:
public interface IPlayer {}
public abstract class Player : IPlayer
{
public ITournament CurrentTournament { get; set; }
}
public class PokerPlayer : Player
{
public PokerPlayer() {}
public int CurrentChips { get; set; }
public double StackPercentage
{
get { return this.CurrentChips / (PokerTournament)this.CurrentTournament.StartingChips; }
}
}
public interface ITournament {}
public abstract class Tournament : ITournament
{
public List<Player> Players { get; set; }
public int PlayerCount { get { return this.Players.Count; } }
}
public class PokerTournament : Tournament
{
private PokerTournament() {}
public PokerTournament(int startingChips)
{
if(startingChips < 1) throw new ArgumentException("Invalid starting amount.", "startingChips");
this.StartingChips = startingChips;
}
public int StartingChips { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6288 次 |
| 最近记录: |