문제

다음과 같이 열거되어 있다고 가정합니다 (MSDN 예에서 가져온) :

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

그런 다음 다음과 같이 코드에 사용할 수 있습니다.

int today = (int)Days.Sun;

의문:

열거를 평가할 수 있습니까? 값이 "태양"인 변수의 날이 있다고 가정 해 봅시다. Days.day는 Days.sun으로 평가합니까?

감사!

예제에 매달리지 말고 비교 등을 사용해야한다고 말해주십시오 ... 배열 사용을 열거로 대체하려고합니다. 그래서 내가 찾고있는 것은 본질적으로 배열과 유사한 열거에서 값을 검색하는 능력입니다.

MyArray [Day] Day가 배열 키를 평가할 수있는 곳 ....

도움이 되었습니까?

해결책

내가 당신이 가지고 있다고 말하는 것이 맞습니까?

string day = "Sun";

그리고 당신은 가치를 되찾고 싶습니다 Days.Sun?

그렇다면 사용하십시오 :

string day = "Sun";
Day day = (Day) Enum.Parse(typeof(Days), day);

다른 팁

예, 그렇게 할 수 있습니다. 당신은 an을 자유롭게 캐스팅 할 수 있습니다 enum 그리고 그 기본 유형.

using System;

class Program
{
    static void Main()
    {
        // prints "zero"
        Console.WriteLine((Foo)0);
        // prints "1"
        Console.WriteLine((int)Foo.one);
    }
}

enum Foo { zero, one, two };

문자열 값도 구문 분석 할 수도 있습니다. 사용 Enum.Parse

[TestFixture]
public class EnumParsingSO
{
    public enum Days
    {
        Sat = 1,
        Sun,
        Mon,
        Tues
    }

    [Test]
    public void EnumFromString()
    {
        Days expected = Days.Mon;
        int expectedInt = 3;
        Days actual = (Days)Enum.Parse(typeof(Days), "Mon");

        Assert.AreEqual(expected, actual);
        Assert.AreEqual(expectedInt, (int)actual);
    }
}

Andrew가 말했듯이, 당신은 열거에서 기본 유형으로 캐스팅 할 수 있습니다. 또한 둘 사이의 UNBOX도 가능하며 상수 0에서 열거 유형으로 암시적인 변환이 있습니다.

using System;

enum Demo { Foo, Bar, Baz };

class Test
{
    static void Main()
    {
        int i = 2;
        object o = i;
        // Unboxing from int to Demo
        Demo d = (Demo) o;
        Console.WriteLine(d);

        o = Demo.Baz;
        // Unboxing from Demo to int
        i = (int) o;
        Console.WriteLine(i);

        // Implicit conversion of 0
        d = 0;
        Console.WriteLine(d);
    }
}

int 예, 그러나 문자열의 경우와 같은 작업을 수행해야합니다. 이것

그렇습니다. 각 열거 값에 대해 기본 정수 값을 제공하면됩니다. 예에서 :

enum Days {
    Sat=1, 
    Sun=2, 
    Mon=3, 
    Tue=4, 
    Wed=5, 
    Thu=6, 
    Fri=7
};

(이제, 왜 이런 식으로 요일을 주문할 것인가?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top