Meta programming, meanwhile, has been "on the radar" for a long time, with the Roslyn compiler project intended to enable programs about writing programs. "However, at the language level we continue not to have a particularly good handle on meta programming."
The team is also considering null capabilities as a theme. "With null-conditional operators such as x?.y C# 6 starts down a path of more null-tolerant operations," the notes say. "You could certainly imagine taking that further to allow e.g. awaiting or foreach'ing null, etc. On top of that, there's a long-standing request for non-nullable reference types, where the type system helps you ensure that a value can't be null, and therefore is safe to access."
Also with C# 7, designers are pondering pattern matching, providing a way of asking if a piece of data has a particular shape, then extracting pieces of it. Array slices, meanwhile, would boost efficiency by providing a "window."
"Array slices represent an interesting design dilemma between performance and usability. There is nothing about an array slice that is functionally different from an array: You can get its length and access its elements," notes state. "For all intents and purposes they are indistinguishable. So the best user experience would certainly be that slices just are arrays — that they share the same type. That way, all the existing code that operates on arrays can work on slices too, without modification."
Design notes state that while input and openness is sought in the development of C#, ultimately, decisions are made by the design team. "It's important to note that the C# design team is still in charge of the language. This is not a democratic process. We derive immense value from comments and UserVoice votes, but in the end the governance model for C# is benevolent dictatorship."
Sign up for MIS Asia eNewsletters.