2008-10-26 7 views
4

Il y a beaucoup de fonctionnalités dans .NET. Certains liés à la langue, d'autres seront liés au cadre lui-même et ayant la capacité d'accéder/faire/exécuter xyz. Donc, pour le plaisir, je me demandais ce que de la communauté caractéristiques de la communauté .NET ou ASP.NET inclure?Quelle est votre fonctionnalité préférée dans .NET?

C'est une question de communauté wiki comme principalement à des fins de vote pour voir quel genre de réponse il y a pour tous les aspects de .NET

Soyez précis, essayez d'inclure quelque chose comme un échantillon de code.

Exemple catégories et sujets:

  • DLR
  • Linq
  • Expressions
  • WPF
  • Generics
  • WCF
+0

je pensais à ce sujet, mais par opposition aux « moins connus » des classes que je voulais voir plus d'une réponse sur les caractéristiques que les gens aiment utiliser (peut-être largement connu). – nyxtom

Répondre

14

. Generics Excellent pour ne pas rouler vos propres classes de conteneur. Disponible depuis C# 2.0.

public T Remove<T>(T item) { 
    foreach (T t in this.list) { 
    if (t.equals(item)) { 
     list.delete(t); 
     return t; 
    } 
    } 
    return null; 
} 
+0

+1 pour cela. Après avoir goûté à la fontaine des génériques, j'ai du mal à utiliser un langage sans. "Bien sûr, je peux juste utiliser une liste ici! Oh ... attendez ... merde." –

+0

Tous génériques .net génériques +1 – annakata

11

Réflexion. Regardons les choses en face: sans réflexion, .NET est juste un C wanna-be. Ou peut-être, si nous voulons être généreux, un Java wanna-être - mais Java a une réflexion, et un peu sent comme un Pascal veux-être autrement, alors évitons cet argument et acceptons simplement que .NET veut être un assembleur portable avec suffisamment de métadonnées pour que VB fonctionne. J'ai entendu des gens prétendre que vous devriez éviter d'utiliser Reflection parce que cela ralentit votre programme et rend la vie difficile pour les outils d'analyse statique ... Franchement, c'est une charge de fumier. Fonctions ralentir C vers le bas, mais qui écrirait le code C sans fonctions? Les macros rendent l'analyse statique difficile pour C, mais C n'est rien sans macros! Par conséquent, je vous invite à devenir fou - si la réflexion vous facilite la vie, utilisez-la. Heck, en abuser. Courbe Votre. NET Langue de choix à votre volonté et montrez-le qui est le patron - avec Réflexion que votre fidèle chêne club de will-flexion. Puis sirotez votre thé glacé et regardez les œuvres de vos mains, confiant que personne n'osera dire que vous n'êtes pas le maître de vos outils.

+0

Bonne réponse. J'écris à peine un programme qui n'utilise pas la réflexion. Et si c'est lent? Vous n'avez pas à le mettre dans toutes vos boucles internes! Et les outils d'analyse statique sont comme des collègues très défiés. Vous ne pouvez pas vous attendre à écrire du code que tout le monde comprend. – Guge

4

Linq To SQL et ADO.NET Entity Framework, caractéristiques merveilleuses ...

+0

Eh bien, beaucoup de gens ont des réserves sur EF (trop compliqué dans de nombreux cas, et vous oblige à utiliser une classe de base, contrairement à LINQ-to-SQL ou NHibernate) –

0

Je n'ai vraiment pas les fonctionnalités de langage que je qualifierais de « favori ». Je veux dire j'aime les génériques, et j'aime LINQ, entre autres choses, mais ce sont tous des imitations à moitié cuites de choses qui fonctionnent mieux dans d'autres langues. Exemple: les génériques sont géniaux, mais loin d'être aussi puissants ou utiles que les templates C++. Exemple 2: Les méthodes d'extension LINQ sont excellentes, mais loin d'être aussi puissantes ou utiles que les classes ouvertes + les anciennes méthodes simples dans ruby.

Et ainsi de suite et ainsi de suite.

Pour être honnête, la chose que j'aime le plus.NET est-il vitesse, et modèle de déploiement. Pouvoir utiliser toutes ces fonctionnalités à moitié cuites mais toujours excellentes est infiniment préférable à ne pas pouvoir les utiliser du tout, car l'exécution est douloureusement lente (par exemple ruby), ou parce que personne ne peut charger votre DLL à moins d'utiliser exactement le même variante de votre compilateur fou en mode de libération avec certains drapeaux (par exemple C++)

+2

Les génériques .NET sont * différents * aux modèles C++ ; à certains égards, ils sont beaucoup plus puissants que leurs cousins ​​C++, et d'autres moins. –

2

Gestion d'état ASP.NET et WebForms.

WebForms fait souvent mauvaise réputation parce que tant de gens ne les utilisent pas correctement et ne comprennent pas comment l'état doit être utilisé.

Utilisé correctement, avec ViewState désactivé là où il n'est pas nécessaire, le repeuplement des données quand il devrait être fait, etc. WebForms rend le développement Web beaucoup plus facile que lorsque vous utilisez quelque chose comme PHP ou ASP.

0

ADO.NET, DataSets spécifiquement typés fortement utilisés avec DataAdapters. Il fait de la gestion de code pour l'interfaçage avec les bases de données et les procédures stockées un doddle.

+2

Donnez-moi un cours simple n'importe quel jour ... juste une opinion, cependant. Pour le travail en DB, LINQ-to-SQL ou NHibernate font un bien meilleur travail. –

8

Je pense qu'il ya beaucoup de fonctionnalités .NET, mais mon vote va pour les choses sous le capot qui rend cette plate-forme l'un des meilleurs choix technologiques de logiciels là-bas:

  • Garbage Collection - Être béatement ignorant quand le souvenir de votre objet doit être libéré est un grand cadeau. Dans d'autres langages (C++), si vous ne nettoyez pas après vous, vous avez des fuites de mémoire et des écrans bleus.

  • Just in Time Compilation - Le compilateur optimise chaque méthode avant l'utilisation, la suppression du code redondant ou non optimisé.

  • AppDomains - Lorsqu'une application .NET décède, elle ne désinstalle pas votre système.

  • côte à côte et exécutionXCopy Déploiement - Pas plus l'enfer des DLL. Nuff a dit.

  • Plate-forme Abstraction - Le framework cache un grand nombre de détails sur la version de Win32 Api natif.

  • Langage Neutre - Qu'il s'agisse de VB.NET, de C# ou de n'importe quelle autre langue, tout est MSIL. Être capable d'hériter d'une classe C# dans VB.NET est plutôt cool.

  • intéropabilité - Capacité à appeler l'héritage API Win32, avec interop COM +, etc

Autres:

  • réflexion, comme indiqué précédemment, est le tueur.
  • Xml La prise en charge de la configration est de loin supérieure à la syntaxe du fichier de propriétés Java.

Dois-je vraiment en choisir un?

7

Délégués; J'aime la possibilité d'écrire du code de style fonctionnel, sans la peine de F #, et les pointeurs de fonction non typés de C++. Ajoutez à cela la très belle syntaxe lambda (C#), et le support du compilateur pour les captures, et elles sont géniales! Je préfère les captures C# aux captures java, car la valeur peut circuler dans les deux sens (la variable, plutôt que la valeur, est capturée).

Comme un exemple trivial - à quel point n'est-ce pas douloureux?

string name = // something interesting 
var item = list.Find(x => x.Name == name && x.Status == Status.Open); 
0

GDI +

graphiques utilisés pour être vraiment dur à faire. Avec GDI +, il est devenu indolore. Et il y a tellement de fonctionnalités dedans. Des choses comme Matrix, Path, Transparency, SmoothingMode sont super, et très amusantes à jouer.

Et si cela ne vous suffit pas, vous pouvez également utiliser DirectDraw ou Direct3D.

+0

GDI + est une API Win32. Je suppose que vous vouliez dire System.Drawing. – Justin

0

Le Combo: Les délégués + méthodes Anonymous + Lambda Expression

3

Le garbage collector. Vous le prenez pour acquis après un certain temps.

2

Dans aucun ordre particulier

Réflexion
Linq
lambdas

enfer, il y a eu des cas où j'ai combiné tous les trois dans une seule déclaration.

2

code-behind fichiers

..un grand pas de l'ère classique ASP (et php?)

0
  • LINQ
  • Le tout fait va à l'IL, qui signifie que vous pouvez WF - Je sais que c'est compliqué et pas la meilleure implémentation de cela, mais si vous passez du temps avec ça, vous trouvez que ça marche bien pour ça ' s but de la cible.
0

Windows Communication Foundation (WCF) est ma fonctionnalité préférée de .NET. C'est un grand pas en avant par rapport aux services Web simples. Il embrasse également la conception toujours croissante de REST de popularité.

1

génériques et expressions arbres

Questions connexes