2010-11-21 8 views
12

J'ai essayé de rechercher les interfaces intégrées les plus utilisées en C#, mais je n'ai pas trouvé d'article, alors j'ai pensé que nous pourrions récapituler ici.quelles sont les interfaces les plus utilisées en C#?

Utilisons la convention suivante dans les réponses:

IinterfaceName1: pour cette

IinterfaceName2: pour que

+0

cinquante points à qui écrit d'abord un script par exemple parcourez tout le code C# sur github et fournissez des statistiques sur les interfaces les plus utilisées. :) – Brian

+0

Complètement non scientifique, mais http://www.google.com/insights/search/#q=ienumerable%2Cinotifypropertychanged%2Cidisposable%2Cilist&cmpt=q – dahlbyk

+0

+1 pour poser une question très importante. Voir ma réponse pour la bonne réponse, je ne peux pas voter en bas de la réponse ci-dessous car j'ai une prime en cours d'exécution :( – user44298

Répondre

31

Les deux premiers dans mon esprit doivent être ceux avec le soutien linguistique:

  • IEnumerable<T> (et IEnumerable): pour à utiliser avec foreach et LINQ
  • IDisposable: pour les ressources nécessitant un nettoyage , utilisé avec using

Au-delà ...

  • IComparable<T> et IComparer<T>: pour le tri généralisé
  • IEquatable<T> et IEqualityComparer<T>: pour l'égalité généralisée
  • IList<T> et ICollection<T>: pour les collections mutables
  • IDictionary<T,K>: pour les collections de consultation
+1

D'accord avec tout ce qui précède, ajouterait seulement IBindingList & INotifyPropertyChanged pour la liaison de données dans WinForms – cordialgerm

+1

+1 pour IDisposable – PhilPursglove

+1

Pas aussi commun que les interfaces de collection, mais 'ISerializable' est également important. – CodesInChaos

10

INotifyPropertyChange: Pour la liaison de données aux classes d'interface utilisateur dans WPF, WinForms et silverlight

+0

Winforms (et, IIRC WPF) supportent également le * Motif modifié –

5

IQueryable<T>: vous permet d'exécuter des requêtes contre les sources de données interrogeable. Par exemple

 IQueryable<Project> projects = db.Projects; 
     var selectedItems = projects 
      .Where(x => x.Workers.Count() > 10 && x.Status != 1) 
      .ToArray(); 

Dans cet exemple, le filtrage serait fait sur SQL Server (en implique la mécanique délicate avec la traduction de l'expression x => x.Workers.Count() > 10 && x.Status != 1 aux instructions SQL) donc pas besoin d'écrire des commandes personnalisées SQL pour utiliser toutes les forces de la source de données.

peut également être utilisé non seulement avec SQL, vous pouvez interroger des objets ou toute autre chose, juste trouver la mise en œuvre de IQueryable<T>

Questions connexes