# Equivalent of C# enum?

**URL:** <https://discourse.julialang.org/t/equivalent-of-c-enum/83717>\
**Category:** General Usage\
**Tags:** value-types\
**Created:** [July 4, 2022, 1:29am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717 "2022-07-04T01:29:35Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [July 4, 2022, 1:29am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/1 "2022-07-04T01:29:35Z")

</div>

Does Julia have the equivalent of C#

```julia
            public enum AorB
            {
                A = 1,
                B = 2                
            }

```

```julia
AorB x = AorB.B

```

A variable that can take a fixed set of possible values.

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [July 4, 2022, 1:30am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/2 "2022-07-04T01:30:55Z")

</div>

enum

---

<div class="post-metadata">

**Author:** ![Christopher\_Fisher](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/christopher_fisher/32/26132_2.png) [@Christopher\_Fisher](https://discourse.julialang.org/u/Christopher_Fisher)\
**Post date:** [July 4, 2022, 1:44am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/3 "2022-07-04T01:44:11Z")

</div>

More specifically, see [@enum.](https://docs.julialang.org/en/v1/base/base/#Base.Enums.@enum)

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [July 4, 2022, 1:48am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/4 "2022-07-04T01:48:35Z")

</div>

You might be interested in [EnumX.jl](https://github.com/fredrikekre/EnumX.jl)

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [July 11, 2022, 10:35am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/6 "2022-07-11T10:35:54Z")

</div>

Thanks everyone. Very useful.

I notice EnumX objects can’t be used in type specification.  
This gives an error

```julia
@enumx X a b

f( x::X ) = x

```

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [July 11, 2022, 10:41am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/7 "2022-07-11T10:41:36Z")

</div>

As per the docs:

> `Fruit` is a module – the actual enum type is defined as `Fruit.T` by default:

So you’ll need to do

```julia
julia> using EnumX

julia> @enumx Foo a b

julia> f(x::Foo.T) = x
f (generic function with 1 method)

julia> f(Foo.a)
Foo.a = 0

```

instead.

---

<div class="post-metadata">

**Author:** ![Lincoln\_Hannah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lincoln_hannah/32/19198_2.png) [@Lincoln\_Hannah](https://discourse.julialang.org/u/Lincoln_Hannah)\
**Post date:** [July 11, 2022, 10:51am UTC](https://discourse.julialang.org/t/equivalent-of-c-enum/83717/8 "2022-07-11T10:51:46Z")

</div>

Thanks
