Quelles sont les nouvelles fonctionnalités les plus cool que vous recherchez ou que vous avez entendu publier en c # 4.0.
Réponses
Trop de publicités?La dynamique des trucs plutôt cool si vous en avez besoin mais je n'attends pas l'utiliser très souvent.
Le générique de la variance pour les délégués et les interfaces est similaire - le manque de variance est un casse-tête pour le moment, mais de nombreux endroits où il est une douleur, et ne pas être couvert par la faiblesse de l'écart de disponible dans le C# 4.
La COM fonctionnalités ne m'intéresse particulièrement - je dois vraiment obtenir une poignée sur ce qu'ils sont bien.
En option et les paramètres nommés pourrait faire une grande différence lors de la construction d'immuable types: il permet une syntaxe du type:
Person p = new Person (name: "Jon", age: 32);
sans avoir de mammouth combinaisons de surcharges de constructeur. Je préfère un peu plus de soutien pour l'écriture immuable types sous la forme de lecture-seule automatiquement les propriétés implémentées, mais je n'attends pas nous les ferons. (Ils ne sont certainement pas dans le projet de liste de fonctionnalité pour le moment.)
Je suis personnellement plus intéressé par un couple de cadre de fonctions de .NET 4.0 - en particulier les contrats de code et extensions parallèles.
IDynamicObject
, de la colle derrière dynamic
, permet une interprétation d'un appel lors de l'exécution.
Ce qui est intéressant pour intrinsèquement non typée scénarios tels que REST, XML, COM, DataSet
, la dynamique des langues, et bien d'autres. C'est une mise en œuvre de répartition dynamique construit sur le haut de la Dynamic Language Runtime (DLR).
Au lieu de la lourdeur de la réflexion de la sémantique, vous dot dans les variables déclarées en tant que dynamic
. Imaginer le travail avec des objets Javascript, Silverlight:
dynamic obj = GetScriptObject();
HtmlPage.Window.Alert(obj.someProperty);
Tous syntaxe C# est pris en charge (je crois):
HtmlPage.Window.Alert(obj.someMethod() + obj.items[0]);
La réflexion elle-même semble beaucoup plus clair:
public void WriteSomePropertyValue(object target)
{
Console.WriteLine((target as dynamic).SomeProperty);
}
public void WriteSomeMethodValue(object target, int arg1, string arg2)
{
Console.WriteLine((target as dynamic).SomeMethod(arg1, arg2));
}
dynamic
est un autre outil dans la boîte à outils. Il ne change pas la statique vs dynamique débat, tout simplement, il facilite la friction.
Prise en charge améliorée des arbres d'expression !