Przyszłość C# (6.0)

Będzie bardziej funkcyjnie. Bardzo dobrze, bo z wielu źródeł dociera, że warto się uczyć języków funkcyjnych i funkcyjnego podejścia do pisania w C#.

Zwięzłe ficzerki w kodzie:

using System;
using System.Text;
using System.Threading.Task;
// import types into namespace
using System.Math;

// primary constructor
public class Point(int x, int y)
{
    // readonly property
    public int X { get; } = x;
    public int Y { get; } = y;

    // property expressions
    public double Dist => Sqrt( X * X, Y * Y );

    // method expressions
    public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
    
    // parameter arrays for IEnumerable
    public static Point Avg(params IEnumerable<Point> points)
    {
        // monadic null checking
        if (points?.FirstOrDefault()?.X ?? -1 )
    }

    public void GetCoordinates(out int x, out int y) { x = X; y = Y; }
}

class Program
{
    static void Main(string[] args)
    {
        var p = new Point(1, 5);

        // multiple return values
        p.GetCoordinates(out var x, out var y);
    }
}

// constructor type parameter inference - 
var t = new Tuple(1,2); // infers Tuple<T1, T2>

Pozyższy kod przeklejony z Mads on the Future of C# (6.0), który to post powstał na podstawie Probable C# 6.0 features illustrated (przykłady kodu przed i po C# 6.0, warto zajrzeć).

Reklamy
Ten wpis został opublikowany w kategorii Programowanie i oznaczony tagami , . Dodaj zakładkę do bezpośredniego odnośnika.

3 odpowiedzi na „Przyszłość C# (6.0)

  1. Łukasz K. pisze:

    Najbardziej podoba mi się Monadic null checking.

  2. A mi właśnie najmniej 😉 Będzie strasznie nadużywane.
    Chodzi mi o dobrą zasadę, że jak kod ma się wysypać to niech to się stanie możliwie blisko przyczyny powstania buga. Prościej będzie go znaleźć.
    A tym operatorem obronisz się w jednym miejscu i przekażesz go dalej.

  3. Ale jako syntactic sugar się przyda.

Możliwość komentowania jest wyłączona.