.NET - Enums.NET

Enums.NET

C#의 enum을 직접 사용하는 것에 비해 Enums.NET을 사용하는 것이 더 빠름.
아래는 비교 코드.
출처

using EnumsNET;
using System;
using System.Diagnostics;
using System.Text;

public static class Program
{
    private enum TYPE
    {
        GRASS,
        FIRE,
        WATER,
    }

    private static void Main()
    {
        int count = 10000000;

        var sb = new StringBuilder();
        var sw = new Stopwatch();

        // 기본 enum
        sw.Start();
        for ( int i = 0; i < count; i++ )
        {
            var result = Enum.GetValues( typeof( TYPE ) ) as TYPE[];
        }
        sw.Stop();

        sb.AppendFormat( "Enum: {0}", sw.Elapsed ).AppendLine();

        // Enums.NET
        sw.Restart();
        for ( int i = 0; i < count; i++ )
        {
            var result = Enums.GetMembers<TYPE>();
        }
        sw.Stop();

        sb.AppendFormat( "Enums: {0}", sw.Elapsed ).AppendLine();

        Console.WriteLine( sb );
    }
}

결과 기본 enum은 9.61초, Enums.NET은 0.42초

기능

using EnumsNET;
using System;

public static class Program
{
    [Flags]
    private enum TYPE
    {
        NONE = 0,
        GRASS = 1,
        FIRE = 2,
        WATER = 4,
    }

    private static void Main()
    {
        // 열거자의 모든 요소 얻기
        var members = Enums.GetMembers<TYPE>();
        var values = Enums.GetValues<TYPE>( EnumMemberSelection.Distinct );

        // 열거자의 요수 수 얻기
        Console.WriteLine( Enums.GetMemberCount<TYPE>() ); // 4

        // 지정된 모든 플래그를 포함한 경우 true
        Console.WriteLine( TYPE.GRASS.HasAllFlags( TYPE.GRASS ) ); // True

        // 지정된 어떤 플래그를 포함하는 경우 true
        Console.WriteLine( TYPE.GRASS.HasAnyFlags( TYPE.GRASS ) ); // True

        // 지정된 플래그를 삭제하고 반환
        Console.WriteLine( TYPE.GRASS.RemoveFlags( TYPE.GRASS ) ); // NONE

        // ToString
        Console.WriteLine( TYPE.GRASS.AsString() ); // GRASS

        // 요소 이름 얻기
        Console.WriteLine( TYPE.GRASS.GetName() ); // GRASS

        // 지정된 요소를 열거자 타입으로 포함하는 경우 true
        Console.WriteLine( ( ( TYPE )4 ).IsValid() ); // True

        // 지정된 문자열을 열거 타입으로 변환
        Console.WriteLine( Enums.Parse<TYPE>( "GRASS" ) ); // GRASS
    }
}

이 글은 2018-05-30에 작성되었습니다.