Наследование выглядит нормально.
Я думаю, что ваша проблема в том, что PlayerList
, вероятно, пусто или чипы каждого Player
в List
равны нулю и, следовательно, сумма также равна нулю .
Сделайте так, чтобы StackPercentage
учитывал возможность того, что Chips
будет равно нулю , если это имеет смысл, или исправьтелогика, которая заполняет PlayerList
, так что Chips
не может быть ноль когда-либо.
РЕДАКТИРОВАТЬ : вы отредактировали свой вопрос, но код, который вы написали, не будетдаже не компилировать ... Я не уверен, в чем ваша проблема, если вы не проясните свой код.
Попробуйте это:
public Form1()
{
....
Tournament tournament = new Tournament();
tournament.PlayerList.Add(new Player("Hero", 5000));
tournament.PlayerList.Add(new Player("Villain1", 3000));
tournament.PlayerList.Add(new Player("Villain2", 4000));
int chips = tournament.PlayerList[0].StackPercentage.ToString();
}
В любом случае, это не сработает.Подробнее см. ответа Хариса Хасана.В основном tournament
- это не тот же объект, что и (Tournament)PlayerList[0]
.Имейте в виду, что каждый раз, когда вы создаете экземпляр Player
, создается новый экземпляр базового класса Tournament
с соответствующим ему emtpy PlayerList
.
Здесь вообще не следует использовать наследование.A Player
и Tournament
вообще не имеют наследственных отношений.A Player
не является Tournament
.Избавьтесь от отношения наследования и просто переместите StackPercentage
в класс Tournament
и преобразуйте его в метод, который принимает в качестве аргумента экземпляр Player
:
public double StackPercentage(Player player)
{
return player.Stack/this.Chips;
}