Jaka jest przyszłość C#? Dziś wpadł mi link http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated przekazany przez kolegę. Mimo, że na oficjalnych blogach nic nie znalazłem, o tyle natrafiłem na streszczenie jednej z rozmów z BUILD 2013: http://wesnerm.blogs.com/net_undocumented/2013/07/anders-on-c-60-at-build-2013.html. Jest to odpowiedź na wątpliwości na temat przyszłości C#, .NET i “Roslyn”. Jak wszystko dobrze pójdzie to .NET 5 będzie hulać na “Roslyn”, a C# nabierze nowych właściwości w oparciu o doświadczenia z TypeScript, a także takie języki jak F# czy Scala.
Ale wróćmy do pierwszego linka i rzućmy okiem na prezentowane propozycje składniowe.
1. Primary Constructors
Zapis public Point(set int x, set int y) lepiej do mnie trafia. Przypomina mi konstrukcję z TypeScript. Czemu składnia nie może być tak prosta jak w tym języku?
2. Readonly auto properties
public int X { get; } = x;
Ta składnia średnio mi się podoba. Jakoś tak nadmiarowo…
3. Static type using statements
using System.Math; ... public double A { get { return Sqrt(Round(5.142)); } }
To jest super. Od zawsze publiczna statyczna metoda wydawała się tak naprawdę metodą poza klasą.
4. Property Expressions
public double Distance => Math.Sqrt((X * X) + (Y * Y));
To też mi się bardzo podoba. Jestem na tak.
5. Method Expressions
public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
Jakby coś pośredniego między wyrażeniem lambda a metodą z ciałem. Kojarzy się z TypeScript. Jestem na tak.
6. Params for enumerables
Do(someEnum); public void Do(params IEnumerable<Point> points) { ... }
Podzielam obawy zapisane przy tym punkcie. Składnia natomiast jest jasna.
7. Monadic null checking
var bestValue = points?.FirstOrDefault()?.X ?? -1;
Nie trzeba będzie już robić dużo if-ów i pomocniczych zmiennych. Fajna sprawa.
8. Constructor type parameter inference
var x = new MyClass(1, "X");
Znowu uproszczenie dla klas generycznych. Jestem na tak.
9. Inline declarations for out params
int.TryParse("123", out int x);
Też świetna sprawa. Zawsze mi przeszkadzały dwie linijki.
Ciekawe, czy nowy C# trafi do Windows 8.2 (Threshold) ? Nowy Windows ma mieć wersję na smartfony i tablety (połączenie Windows Phone i Windows RT) oraz wersje dla użytkowników stacjonarnych, w której aplikacje Windows Store będą mogły wyświetlać się w normalnym oknie z poziomu pulpitu. Tak więc szykują się ciekawe zmiany zarówno w C#, .NET, jak i w Windows.