@Laguna_Seca

Как получить список доступных динамичных значений C#?

Представим что у нас есть объект "Fighter" и у него есть список доступных ударов "Fists". Fighter рандомно выполняет 1 удар. По умолчанию есть 4 удара (наименование, сила). Если бы список ударов был бы не изменяем, и бы использовал просто многомерный массив и вытаскивал удар, равный рандомному числу.
В моем случае список ударов изменяем извне. У нас получается такая зада:
1) Способ хранения списка ударов "наименование", "сила"
2) Получение списка доступных ударов
3) Выбор из доступного списка рандомного удара

Я бы смог все это реализовать используя sql, но данные мизерные и очень важна скорость работы.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Используйте List вместо массивов.
Ответ написан
Комментировать
EreminD
@EreminD
Кое-что умею
Можете использовать словарь. Словарь хранит связки ключ-значение (наименование - сила, в вашем случае)
Ключ должен быть уникальным (не повторяться)
При объявлении, указывается тип ключа и тип значения. Например, для Dictionary ключ будет строкой, а значение - целым числом
//создали словарь
Dictionary<string, int> Fists = new Dictionary<string, int>()
//наполнили
Fists["light"] = 10;
Fists["middle"] = 50;
Fists["hard"] = 100;
Fists["ult"] = 350;

//получаем значение
int fightPower = Fists["ult"];


Можно создать структуру, где будут поля Имя (наименование) и сила и использовать список (List)
Список - это как массив, только размер не нужно задавать и на лету значения можно легко удалять и добавлять
List<attack> Fists = new List<attack>()
Fists.Add(new Attack(){ Name = "light", Power = 10}) 
Fists.Add(new Attack(){ Name = "middle", Power = 50}) 
....

//получаем значение
int fightPower = Fists[0];


И на будущее. Про изменение размера массивов. Почитайте, есть статический класс Array и у него есть метод Resize(). Ему можно передать свой массив и произойдет изменение размера. Может, вам вообще такой вариант подойдет (хотя нет. его вообще никто не юзает)

UPD: потратьте время, изучите статью https://msdn.microsoft.com/ru-ru/library/6tc79sx1(...
Потом не будет проблем с выбором коллекции
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы