Tentative C# 12 feature list #69074
Replies: 14 comments 87 replies
This comment was marked as disruptive content.
This comment was marked as disruptive content.
-
Because they have to be understood by the language and compiler in order to make code legal.
We are uncertain where interceptors will land. Different stages of the proposal have involved language changes or not. Right now we're experimenting with them solely as a compiler feature. But we've had requests, and we may learn through our own previews, about things that would pull it back to being a lang feature.
Correct. More specifically, that it is not immutable. Conversations with several different sources showed confusion over this point. Where people stated that their intuition around this feature was that it produced immutable collections only, due to the name 'literal' being in it. We also wanted to match this with 'tuple expressions', a feature we view as a spiritual sibling to this one. Naming things consistently between the two is nicer. This also applies to the implementation, which we want to match in naming to the feature, and which we want to match in naming to the many existing features that have already shipped. |
Beta Was this translation helpful? Give feedback.
-
Cut of field keyword is huge disappointment for me. Was there a real consideration in the decision making, if that feature will not be published as it is, without waiting for something, that has uncertain complexity? I mean, that feature is so long awaited, many times suspended and workaround for that feels so ... unnatural. I remember when started using C#, I was so confused, why auto-props work by default, but when wanting to implement non-default accessors, it has to declare dummy backing field... |
Beta Was this translation helpful? Give feedback.
-
Decent list of changes, but I am still disappointed to see that partial properties was once again not even included in the initial plan. This is also surprising when .NET is still huge for client-side applications. And partial properties would make declaring INPC and dependency properties much closer to how it looks in popular JS frameworks. An auto property with an attribute. "field" keyword would only slightly improve this problem. |
Beta Was this translation helpful? Give feedback.
-
Regarding inline Arrays, the compile-time fixed length means that when you need to define inline arrays of different lengths, you need different types. This is really ridiculous.
|
Beta Was this translation helpful? Give feedback.
-
Roll up, roll up. It's LTS release time, folks. Let's see what C# has on offer this time around ... Oh! Well that was a little disappointing: Oh well, not to worry. C# 14 will be along in two years... 🙄 |
Beta Was this translation helpful? Give feedback.
-
As for InlineArrays, I totally have no idea about how this feature was even considered to be shipped, it is a completely redundant feature in C#. We even don't have an issue or discussion in csharplang repo for people in community to discuss about this. struct Foo
{
private unsafe fixed int Value[10];
public int this[int index]
{
get { unsafe { return Value[index]; } }
set { unsafe { Value[index] = value; } }
}
} and [InlineArray(10)]
struct Foo
{
private int elem;
} ? So why not just make the unsafe buffer support generics and arbitrary types instead? |
Beta Was this translation helpful? Give feedback.
-
What astonishes me the most is the reactions of developers that features are pulled out of a release. Although most developers probably are more used to delaying releases because features are not yet ready. |
Beta Was this translation helpful? Give feedback.
-
For an LTS this has to be the worst C# version ever. Of course, all the things that we really needed are not implemented, and cut again, and again. C# team kind of like old Microsoft now, especially Cyrus which literally doesn't care about what other people think about the language and will always respond to most of the posts and comments about how he think the language might be better, and how other things that the team wants to implement limit how well they are doing the things that are likely to implement (cut), which makes no sense at all. It's crazy to me, maybe you need to stop posting a version a year if you are going to release a version of C# like this with virtually 0 features, because the ones you decided to implement where for even more partial stuff, or things with a lot of negative feedback which you don't even care about, and do what the team thinks it's better, but somehow this is open source. And of course, Cyrus will respond saying that C# is open source and that we can implement those things if we could. So sad for C#. |
Beta Was this translation helpful? Give feedback.
-
Sadly that the |
Beta Was this translation helpful? Give feedback.
-
Nice to see the features that I'll know about but probably never use. Curse you, C#! Why do you do everything |
Beta Was this translation helpful? Give feedback.
This comment was marked as disruptive content.
This comment was marked as disruptive content.
-
It can be seen that everyone is generally dissatisfied with this C#12 feature update, but everyone's speeches will be in vain. I've found this not the first time, but countless times, after C# was open sourced. Thinking about your proposal, it will not be realized in 10, 20, 30 years. By then you're old, maybe even dead, and it doesn't matter if C# implements the proposal you support. This reply is my last reply. I believe this reply does not contain any personal attacks or violate any community rules, correct? Although I exposed some problems, it is clear that the development of the C# community is frustrating. I don't think I should continue to speak. Because there is no need.I figured I'd silently wish C# the best of luck. I quit the discussion. |
Beta Was this translation helpful? Give feedback.
-
Inline array link is broken |
Beta Was this translation helpful? Give feedback.
-
As we progress toward release, we want to update you on the features that we anticipate being in C# 12.
You can get C# 12 by installing the latest Visual Studio preview or the latest version of the .NET SDK.
We are always working on a number of new features for C#, and it is the time of year where it's becoming clear which ones are likely to be ready for shipping in C# 12. The remaining features are still top of mind for future releases.
For the features that are currently in C# 12, you can find out more in What's new in C# 12 at Microsoft Learn. You can also find details about each feature in the links above, which are the same links you can find on the Roslyn Language Feature Status page.
Beta Was this translation helpful? Give feedback.
All reactions