Niedługo dostępny będzie C# 4.0. Z ciekawych rzeczy, które mają wprowadzić:
-
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). -
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);
- 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>. - 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:
-
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