4 ms·
I'm most excited for records and `with`. This is a feature in C# I've been wanting for years and will really help make the use of immutable data throughout a sy
by eropple 6y ago
I'm most excited for records and `with`. This is a feature in C# I've been wanting for years and will really help make the use of immutable data throughout a system easier with a ton, and I mean a ton, less boilerplate.
- SparksAndQuarks 6y agoShame 'with' will not apply to structs - all the ingredients are already there. Through it might be in the plan for some future release.
- eropple 6y agoAs I understand it, making structs implement the record stuff would potentially be...weird. But you're right, it'd be nice.
- capableweb 6y agoSpeaking about the new records, it bothers me that the keyword in the class declaration is "data" but they call it "record". Why not just name it record? Or "value-data" or something more descriptive? Considering it's one of the biggest languages today, I'm assuming they have ton of people working on it, so I'm clearly missing something here. And why still call it a "class" in the code? Could just have been have keyword instead... So many questions
- oaiey 6y agoIs it data? It bothers me as well, but was not the latest blog post with the terminology record?
- Metasyntactic 6y ago> it bothers me that the keyword in the class declaration is "data" The keyword is the declaration is `record`. So you would write your record: record Person(string FirstName, string LastName); Source: I am one of the language designers on C# :)
- capableweb 6y agoHuh, reading from https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/ https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/ which was the first hit on Google shows the following example: public data class Person(string FirstName, string LastName); It seems https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9 https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csh... is saying what you wrote above though. Seems my previous comment was based on outdated/wrong information, I'm sorry and thanks for clarifying :) Edit: Seems the post I wrote was published 20th May (probably written before) and that was the same date someone said the same thing as my comment here in the discussion about the "records" feature https://github.com/dotnet/csharplang/issues/39#issuecomment-631572976 https://github.com/dotnet/csharplang/issues/39#issuecomment-...
- runfaster2000 6y agoHere is a more recent update on records with the new syntax. https://devblogs.microsoft.com/dotnet/announcing-net-5-0-rc-1/#c-9-records https://devblogs.microsoft.com/dotnet/announcing-net-5-0-rc-...
- eropple 6y agoHa, I don't know if you worked on this but I had hopes when I saw you'd gone back that maybe we'd finally see records. I'd been seeing your name on record proposals forever.
- melolife 6y agoRecords are good, although in typical Microsoft style they've elected to call the new constructor syntax "positional" instead of "primary", and then subsequently failed to generalize the feature to normal classes. With is just building on the anti-pattern where .NET programmers are too lazy to implement constructors.
- manigandham 6y ago> "With is just building on the anti-pattern where .NET programmers are too lazy to implement constructors." What? And aren't records just a lazy way to make classes then?
- melolife 6y agoThe new with-expressions are a concession to the existence of initializers, which are themselves literally "stuff that should have been in the constructor" and are incompatible with immutability (hence the new init property hack). The correct path would have been to require primary constructors for records as the only point of entry for data, declare initializers incompatible with primary constructors, and then just synthesize a method for creating copies - but hey, then you might as well just use Scala.
- aliswe 6y agoYou seem to not appreciate the prqcticality of immutability in a large system.
- melolife 6y agoQuite the opposite. My language of choice is Scala, which probably explains my frustration at Microsoft's consistent inability to do the right thing.