как пользоваться Enum, преобразовывая param[i] (<-тут int) в string (слово, которое соответствует данному param)?

191
17 апреля 2017, 02:38

Есть класс с перечислением:

public class ObjectManagerScript : MonoBehaviour {
    public enum param1 {blala, Hi, Hello, Hmm};
    public enum param2{again, Ask, Queastion};
}

И другой класс, где я хочу выводить слова вместо цифр:

     public class ObjectChooser : MonoBehaviour {
    // тут пропущен код, который присваивает param1 и param2 числа
    // в итоге каждому param1 и param2 соответствует одно из чисел своего enum
        for (int i = 0; i < maxObjects; i++){
        Debug.Log(param1[i]);// это неправильно, просто я даже не знаю, как примерно это может выглядеть
                             // т.е тут имею ввиду, что, например, param1 = 2 (значит, Hello), и это i-элемент из maxObjects
        }

Вот как-то так. Попробовал поискать, но даже не знаю, как сформулировать вопрос

Answer 1

Это можно реализовать используя класс Enum.

Количество констант в enum можно найти так:

 Enum.GetNames(typeof(param1)).Length;
или
  Enum.GetValues(typeof(param1)).Length;

Получить имя крнстанты так:

Enum.GetName(typeof(param1),индекс_константы)

В твоем случае:

for (int i = 0; i < maxObjects; i++)
    Debug.Log(Enum.GetName(typeof(param1),i);

Или так:

foreach(string s in Enum.GetNames(typeof(param1)))
    Debug.Log(s);

https://msdn.microsoft.com/ru-ru/library/system.enum.getnames(v=vs.110).aspx https://msdn.microsoft.com/ru-ru/library/system.enum.getname(v=vs.110).aspx https://msdn.microsoft.com/ru-ru/library/system.enum.getvalues(v=vs.110).aspx

Answer 2

https://msdn.microsoft.com/ru-ru/library/system.enum.getvalues(v=vs.110).aspx

using System;
enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };
public class Example
{
   public static void Main()
   {
      foreach (var value in Enum.GetValues(typeof(SignMagnitude))) {
         Console.WriteLine("{0,3}     0x{0:X8}     {1}",
                           (int) value, ((SignMagnitude) value));
}   }
}
// The example displays the following output:
//         0     0x00000000     Zero
//         1     0x00000001     Positive
//        -1     0xFFFFFFFF     Negative

https://msdn.microsoft.com/ru-ru/library/essfb559(v=vs.110).aspx

public class ParseTest
{
    [FlagsAttribute]
    enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 };
    public static void Main()
    {
        Console.WriteLine("The entries of the Colors enumeration are:");
        foreach (string colorName in Enum.GetNames(typeof(Colors)))
        {
            Console.WriteLine("{0} = {1:D}", colorName, 
                                         Enum.Parse(typeof(Colors), colorName));
        }
        Console.WriteLine();
        Colors orange = (Colors) Enum.Parse(typeof(Colors), "Red, Yellow");
        Console.WriteLine("The orange value {0:D} has the combined entries of {0}", 
                           orange);
    }
}
READ ALSO
Работа с множеством событий от объектов одного типа

Работа с множеством событий от объектов одного типа

Допустим, есть некоторая коллекция объектов одного типа и хотел бы получать события от каждого объекта

186
C# Получение значения из List

C# Получение значения из List

Привет, друзьяНадеюсь Вы мне поможете, потому что я только начинающий в C#

252
Добавление записи в бд через DropDownList ASP.NET

Добавление записи в бд через DropDownList ASP.NET

вот код Service_type поле в которое нужно записать, Type собственно сам айдишник dropdownlist-аЧто не так с моим кодом?

278