Type Unions for C#
Quirin Schroll
qs.il.paperinik at gmail.com
Tue Aug 6 15:15:00 UTC 2024
On Saturday, 3 August 2024 at 11:59:29 UTC, harakim wrote:
> Java enums are the only feature that of Java I like better than
> C#. An enum, in my mind, should be a list of all possible
> values. That falls flat in C# because you can have someting
> like this
> ```enum Animal { Dog = 1, Cat = 2 };
> Animal a = (Animal)200;
> ```
> and it compiles just fine. I have had a lot of trouble with
> that when deserializing data. Also, he is right that you can't
> say int b = a switch { Animal.Dog => 1; Animal.Cat => 2 }
> because the enum provides no guarantees about what will be
> stored.
>
> Enums that guarantee it is one of many values are great. They
> simplify code so much. C# enums are like missing type safety
> compared to Java. I have even seen Java enums used for strategy
> pattern, where you store the name in the database and then it
> loads the enum without explicit reflection. It made me double
> take at first, but turned out to be awesome.
That is because in Java, enum values are actually objects,
whereas in C# (like in C, C++, and usually in D), enum values are
integers. (In D, enum values can have any type.)
You can emulate Java enums (to some degree) in D using a struct
and `static immutable` values.
More information about the Digitalmars-d
mailing list