Задача на логику элементов

217
01 июня 2018, 21:30

У меня есть 4 элемента. Мне нужно их как то различать, чтобы потом сравнивать и рассчитывать что больше. К примеру I1 > I2 и так далее. Всего есть 4 элемента: 0,1,2,3. Как мне не создавать путаницу и при этом я смог бы рассчитать что больше через оператор if?

Answer 1

Честно - не понял вопроса. Если у вас есть какие то числовые эквиваленты элементам (как то вы их будете сравнивать?), то вы изначально будете знать что больше. С чем сравнивать будете? Три земли больше двух огней и одного воздуха? Если так, то Enum вам в помощь:

    private enum Element
    {
      earth=70,
      air=35,
      water=48,
      fire=63
    }
....
if((int)Element.earth*3>(int)Element.fire*2 + (int)Element.air))
{
do...
}

Если значимый тип вам не подходит, то делайте классы. Или переформулируйте вопрос.

Answer 2

Если речь не идет о обработке каждый кадр, можно использовать сортировку order by

Если Enum

enum Element
    {   Fire =1,
        Water =2,
        Earth =3,
        Air =4
    }
    static void Main(string[] args)
    {
        var list = new List<Element>();
        list.Add(Element.Air);
        list.Add(Element.Earth);
        list.Add(Element.Fire);
        list.Add(Element.Air);
    foreach(var element in list)
    {
        System.Console.WriteLine(element);
    }
    System.Console.WriteLine();
    list.Sort();
    foreach (var element in list)
    {
        System.Console.WriteLine(element);
    }
}

отсортируется по значением в enum.

Если реализуешь элементы через классы, будет работать так же, если реализуешь IComparable

READ ALSO
Не найдена функция из ntdll.dll

Не найдена функция из ntdll.dll

Есть следующий код:

196
Как проверить пароль с Rfc2898DeriveBytes шифрованием?

Как проверить пароль с Rfc2898DeriveBytes шифрованием?

Каждый раз выдает разные хеши, но как тогда проверить два пароля один из базы где храниться хешированным этим методом и один с пользователя...

164