Nowości w C# 4.0

03.03.2009 18:17 in programowanie, .net

Niedługo dostępny będzie C# 4.0. Z ciekawych rzeczy, które mają wprowadzić:

  1. dynamic - ciekawy, aczkolwiek niepokojący feature. W skrócie - dostaniemy typy nieokreślone z możliwością wywoływania na nich dowolnych metod, które będą bindowane dopiero w czasie wykonywania (w przypadku klas .NET-owych; dla obiektów COM i obiektów z interfejsem IDynamicObject magia jest jeszcze głębsza). Ciekaw jestem, jak będzie radzić sobie z tym Intellisense. W każdym razie widzę jedno (jedyne?) całkiem sensowne zastosowanie:
    static dynamic Sum(dynamic a, dynamic b)
    {
        return a + b;
    }
    Dzięki temu będzie można w końcu napisać abstrakcyjną klasę macierzy (choć nie ukrywam, że interfejs INumeric byłby dużo bezpieczniejszym rozwiązaniem).
  2. domyślne wartości parametrów funkcji. W końcu! Czy to naprawdę było tak trudne do realizacji?
    public void M(int x, int y = 5, int z = 7);
  3. Covariance i Contravariance. Legalna będzie taka konstrukcja:
    IList<string> strings = new List<string>();
    IEnumerable<object> objects = strings;
    var result = strings.Union(objects); 
    Pojawią się nowe słowa kluczowe dla szablonów:
    public delegate TResult Func<in TArg, out TResult>(TArg arg);
    W skrócie: będzie możliwość rzutowania szablonu z jakimś typem na szablon ogólny (object) i odwrotnie (w zależności od kierunku parametru). Dzięki temu Func<object,string> będzie można użyć jako Func<string,object>.
  4. oczywiście razem z C# 4.0 pojawi się też .NET Framework 4.0. Z ciekawszych rzeczy dostępny będzie od razu Parallel Extensions - dobra rzecz dla leniwych programistów chcących wykorzystać moc procesorów wielordzeniowych.

Źródła:
New Features in C# 4.0
Simulating INumeric with dynamic in C# 4.0

Comments:

  1. nandrew

    nandrew:

    co do "domyślne wartości parametrów funkcji" - brak implementacji tego feature'su w poprzednich wersjach C# była spowodowana konkretną decyzją projektową (zamierzoną!). Jednak jak widać ugięli się pod naciskiem community oraz zasadą równoległości z VB.

    26.04.2009 10:32:05

Leave comment: