2010-11-21 12 views
12

Próbowałem wyszukać najczęściej używane wbudowane interfejsy w języku C#, ale nie mogłem znaleźć artykułu, więc pomyślałem, że możemy podsumować tutaj.jakie są najczęściej używane interfejsy w języku C#?

Użyjmy następującą konwencję w odpowiedziach:

IinterfaceName1: w tym

IinterfaceName2: dla tego

+0

Pięćdziesiąt punktów do kogo najpierw pisze skrypt np przeszukaj cały kod C# na github i przekaż statystyki dotyczące najczęściej używanych interfejsów. :) – Brian

+0

Zupełnie nienaukowy, ale http://www.google.com/insights/search/#q=ienumerable%2Cinotifypropertychanged%2Cidisposable%2Cilist&cmpt=q – dahlbyk

+0

+1 za zadając BARDZO WAŻNE PYTANIE. Zobacz moją odpowiedź na PRAWIDŁOWĄ odpowiedź, nie mogę głosować na odpowiedź poniżej, ponieważ mam nagrodę: ( – user44298

Odpowiedz

31

dwóch najlepszych w moim umyśle muszą być te z obsługą języka:

  • IEnumerable<T> (i IEnumerable): dla używać z foreach i LINQ
  • IDisposable: do zasobów wymagających porządkowe stosowane przy using

poza tym ...

  • IComparable<T> i IComparer<T>: dla uogólnionej sortowania
  • IEquatable<T> i IEqualityComparer<T>: dla uogólnionej równości
  • IList<T> i ICollection<T>: do modyfikowalnych kolekcjach
  • IDictionary<T,K>: do zbiorów odnośników
+1

Zgadzam się z powyższymi, dodam IBindingList i INotifyPropertyChanged dla powiązania danych w WinForms – cordialgerm

+1

+1 dla IDisposable – PhilPursglove

+1

Nie tak powszechne, jak interfejsy kolekcji, ale "ISerializable" jest również ważne. – CodesInChaos

10

INotifyPropertyChange: o wiązanie z klas UI w WPF, WinForms i Silverlight

+0

WinForm (i IIRC WPF) również obsługuje * Zmieniono wzór –

5

IQueryable<T> danych: pozwala wykonać żądania wobec źródeł danych queriable. Na przykład

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

W tym przykładzie filtrowanie będzie wykonywane na SQL Server (w trudnych obejmuje mechanikę z tłumaczenia Expression x => x.Workers.Count() > 10 && x.Status != 1 do SQL) Więc nie ma potrzeby, aby napisać niestandardowe polecenia SQL, aby wykorzystać całą potęgę źródła danych.

także mogą być wykorzystywane nie tylko z SQL, można wyszukać obiekty lub cokolwiek innego, po prostu znaleźć realizację IQueryable<T>

Powiązane problemy