Я много искал, но не могу найти ответ, который я достаточно понимаю, чтобы перевести в мой проект. Какова цель: мне нужно найти элемент с самым высоким параметром armor_class в списке и добавить класс брони armor_class в класс брони персонажа.C# - Как получить элемент из общего списка с самым высоким конкретным параметром?
Итак, у нас есть список создан таким образом:
public List<Weapon> characterInvWeapon;
public List<Armor> characterInvArmor;
т.д.
Вот как создаются класс брони и ее свойства:
public class Armor : Item, IComparable <Armor> {
public string armor_prof;
public string armor_category;
public int armor_class;
public int armor_str_req;
public string armor_stealth_mod;
public Armor (string c_name
, string c_description
, bool c_stackable
, int c_value
, string c_coin_type
, int c_weight
, string c_armor_prof
, string c_armor_category
, int c_armor_class
, int c_armor_str_req
, string c_armor_stealth_mod) : base (c_name, c_description, c_stackable, c_value, c_coin_type, c_weight)
{
armor_prof = c_armor_prof;
armor_category = c_armor_category;
armor_class = c_armor_class;
armor_str_req = c_armor_str_req;
armor_stealth_mod = c_armor_stealth_mod;
}
public int CompareTo(Armor other)
{
if (armor_class == other.armor_class)
return String.Compare (name, other.name); // a < ab < b
else
return other.armor_class - armor_class;
}
}
Броня класс наследующий class Item, который имеет первые 6 свойств. Брони хранятся в списке, предназначенном для брони - public List<Armor> characterInvArmor;
.
Пример пункт:
AddToItemStore(new Armor("Breastplate", "Description.", false, 400, "gp", 20, "Breastplate", "Medium Armor", 14, 0, ""));
Добавление сценария:
public void AddToCharacterInventory(Item it)
{
if (it is Weapon)
{
charInvWeapon.Add((Weapon)it);
charInvWeapon.Sort();
}
else if (it is Armor)
{
charInvArmor.Add((Armor)it);
charInvArmor.Sort();
}
}
Теперь, как я уже говорил, мне нужно найти пункт в списке charInvArmor с самым высоким параметром armor_class и использовать его значение в другой функции , который вычисляет класс брони из многих переменных.
Таким образом, в другой функции, characterArmorClass = armorWithHighestArmorClass + otherVariable + someotherVariable;
и т.д.
Я подозреваю, что есть некоторые удобные ярлыки в Linq, но я был бы самым благодарным за некоторые примеры без Linq. Linq тоже приветствуется, но я абсолютно новичок в этом, а также беспокоюсь о производительности и совместимости приложений с iPhone. Я читал, что iOS может вызвать проблемы с Linq. Это должен быть быстрый и совместимый расчет.
Да, это был бы, вероятно, лучший способ. Но как мне сравнивать предметы, если они все «брони» в этом случае? пс. Я прочитаю его, спасибо, я действительно новичок в C# и кодировании, поэтому я делаю много ошибок на этом этапе. –
@Sarr: Вы не можете просто выполнить 'if (armor.armor_class> maxArmorClass)'? Я не уверен, что вы подразумеваете под «если все они« доспехи ». –
О, черт побери, извините, не думал о очевидной вещи. Выезд. // И это все, абсолютно блестящее и простое решение для меня. Спасибо, это поможет во многих других областях. –