www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Type Unions for C#

reply Daniel Nielsen <no public.email> writes:


best or if they improved something.

https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf542d8b9a189c50068615b439/proposals/TypeUnions.md
Jul 30 2024
parent reply harakim <harakim gmail.com> writes:
On Tuesday, 30 July 2024 at 07:24:00 UTC, Daniel Nielsen wrote:


 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 ```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 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.
Aug 03 2024
parent Quirin Schroll <qs.il.paperinik gmail.com> writes:
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 


 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 

 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, 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.
Aug 06 2024