none
IList<T> Kullanımı Hk. RRS feed

  • Genel Tartışma

  • Arkadaslar IList<T> generic haline bir dizi gönderebiliyormuyuz ? Gönderiyormuşuz kafam karıştı acıklayacak olan var mı ? Aynı zamanda IEnumrable (böyle mi yazılıyor siz naldınız :D ), IEmurator de acıklar mısınız bunlarada dizi gönderebiliyormuyuz ...

    Kalın yazdım nasıl IList<T>  kolleksiyonu icine aliyor, IEnumarable yazsam olmaz mı yada Emumrator

     static void Main()
            {
                Employee[] employees =
                {
                    new Employee("Bugs Bunny", 20000),
                    new Employee("Elmer Fudd", 10000),
                    new Employee("Daffy Duck", 25000),
                    new Employee("Wile Coyote", 1000000.38m),
                    new Employee("Foghorn Leghorn", 23000),
                    new Employee("RoadRunner", 50000)
                };

     BubbleSorter.Sort(employees, Employee.CompareSalary);

    }

     class BubbleSorter
      {
        static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison)
        {
          bool swapped = true;
          do
          {
            swapped = false;
            for (int i = 0; i < sortArray.Count - 1; i++)
            {
              if (comparison(sortArray[i + 1], sortArray[i]))
              {
                T temp = sortArray[i];
                sortArray[i] = sortArray[i + 1];
                sortArray[i + 1] = temp;
                swapped = true;
              }
            }
          } while (swapped);
        }
      }


    class Employee
      {
        public Employee(string name, decimal salary)
        {
          this.Name = name;
          this.Salary = salary;
        }

        public string Name { get; }
        public decimal Salary { get; private set; }

        public override string ToString() => $"{Name}, {Salary :C}";

        public static bool CompareSalary(Employee e1, Employee e2) =>
          e1.Salary < e2.Salary;

      }
    1 Ekim 2016 Cumartesi 22:08

Tüm Yanıtlar

  • Deleted
    2 Ekim 2016 Pazar 09:03
  • IList<T> koleksiyonlardaki standart üyeleri implemete etmeni sağlayacak interface. Yani Add, AddRange, IndexOf, Count, IsReadOlny gibi üyelerin sana tanıdık gelmesi gerekir. İşte bu üyeleri ve indexer'i implement etmeni zorunu kılar. IEnumerable ise GetEnumerator isimli metotları implement etmeni zorunlu kılar. GetEnumerator foreach döngüsü ve Linq extension metotlarının temelini oluşturur. Ama GetEnumerator metodu IList<T> içinde zaten mevcuttur.

    Soruna gelince, yazdığın o metoda IList<T> interface'ini implement etmiş herhangi bir şeyi parametre verebilirsin. 

    Edit: IList<T> yerine IEnumerable<T> yazamazsın çünkü metot içinde kullandığın Count özelliği ve indexer'ı class'ına kazandıran Ienumerable<T> değildir. 


    try { OldugunGibiGorun(); } catch (BeceremedimException) { GorundugunGibiOl(); }




    Bu arayüzlerin hangisi hangisinden implemente ediliyor , kısaca aciklar mısınız IEnumable  şu işe yarar, IEnumrator şu işe yarar , IList şu işe yarar bu arayüzlerin hangisinin ne işe yaradıgı ve hangisinin hangisinden implemente edildiğini bi öğrenemedim arayüz oldugundan soyutlamaya yarıyorlar ama hangisinin hangisinden implemente edildigini ve ne işe yaradıgını öğrenemedim :( 
    2 Ekim 2016 Pazar 17:42
  • Deleted
    2 Ekim 2016 Pazar 18:10
  • IList:

    Koleksiyonlarda bulunan standart Add, AddRange, Remove gibi metotları implemente etmeyi zorunlu kılar.

    IEnumerable:

    GetEnumerator metodunun implemente edilmesini zorunlu kılar. Bu metot foreach döngüsünü temelini oluşturur.

    IEnumerator:

    Current, MoveNext,Reset gibi metotları implement etmeyi zorunlu kılar. Bu metotlar sayesinde foreach döngüsü akış sağlar. Literatürde foreach diye bir döngü yoktur, foreach döngüsü IL tarafından while döngüsüne çevirilir. Ve Ienumerator ile implement edilen bu metotlar sayesinde while döngüsü devam eder.


    try { OldugunGibiGorun(); } catch (BeceremedimException) { GorundugunGibiOl(); }

    Hangisi base hangisi, alt sınıf ?
    2 Ekim 2016 Pazar 19:31
  • Deleted
    2 Ekim 2016 Pazar 19:48
  • Bu örneği nerede buldun? Strategy Pattern mi araştırıyorsun?

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    2 Ekim 2016 Pazar 22:01
    Moderatör
  • Bu örneği nerede buldun? Strategy Pattern mi araştırıyorsun?

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    Örnek  christian nagel ait adam sagolsun :D her maile yanıt veriyor :) telefon numarasıda var aramızda 24 saat saat farkı olsa bile telefonuna mesaj atiyorum :)

     Önay bey, delegate örnegi , siralama yapiyor soyutlama olayını tam anlamadım IList nasıl  diziyi parametre aliyor diye düşündüm hangisi base bunun yerine soyutlamak icin IEnumable, IEnumartor olur mu diye düşündüm ....

    Bilmediğimiz cok şey varmış.... Core ile ilgili bir örnekler akıllara zarar :/ Dumur oldum....şu Framework'u bi tekrar edeyim sizden MVC icin biraz ders alacagım. 

    2 Ekim 2016 Pazar 23:02
  • Sınıf muhabbeti yok bunlar interface. IList tipinin üzerine sağ tıklayıp Go To Definition komutu verirsen içeriğini görüntüleyebilirsin.

    public interface IList: ICollection, Ienumerable
    Yani IList, ICollection ve IEnumerable arayüzlerinden inherite edilmiş. Dolayısıyla IList olan aynı zamanda ICollection ve Ienumerable de olur.


    try { OldugunGibiGorun(); } catch (BeceremedimException) { GorundugunGibiOl(); }

    İnterfacelerinde base 'i yok mudur  ICola : IProduct gibi .

    2 Ekim 2016 Pazar 23:14
  • Olur tabi ama senin amacın ne burda? interface yapısını anlamak mı? abstraction mu inheritance mi? çünkü sorduğun sorular bunların hepsini içeriyor.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    3 Ekim 2016 Pazartesi 01:19
    Moderatör