Type Unions for C#

harakim harakim at gmail.com
Sat Aug 3 11:59:29 UTC 2024


On Tuesday, 30 July 2024 at 07:24:00 UTC, Daniel Nielsen wrote:
> D and C# share some similarities and I found this an 
> interesting C# proposal, which we can use to see if our current 
> plans are the best or if they improved something.
>
> https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf542d8b9a189c50068615b439/proposals/TypeUnions.md

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.




More information about the Digitalmars-d mailing list