• Write
  • using System; delegate int




    Download 1 Mb.
    bet4/9
    Sana13.02.2024
    Hajmi1 Mb.
    #156042
    1   2   3   4   5   6   7   8   9
    Bog'liq
    37-mavzu

      Bu sahifa navigatsiya:
    • Write
    using System;
    delegate int Incr(int v);
    namespace Lambda
    {
    delegate bool IsEven(int v);
    class SimpleLambdaDemo
    {
    static void Main()
    {
    Incr incr = count => count + 2;
    Console.WriteLine("Lambda ifodasida incr dan foydalanish : ");
    int x = -10;
    while(x <= 0)
    {
    Console.Write(x + " ");
    x = incr(x);
    }
    Console.ReadKey();
    }
    }
    }
    Natija quyidagicha:



    1. using System;
      delegate int Incr(int v);
      namespace Lambda
      {
      delegate bool IsEven(int v);
      class SimpleLambdaDemo
      {
      static void Main()
      {
      IsEven isEven = n => n % 2 == 0;
      Console.WriteLine("Lambda ifodasida IsEven dan foydalanish : ");
      for(int i=1; i <= 10; i++)
      if(isEven(i)) Console.Write(i + " ");
      Console.ReadKey();
      }
      }
      }


    Yuqoridagi birinchi dasturda, incr delegatsiyasining namunasiga yagona lambda iborasi berilgan, bu hisoblash natijasi parametrning qiymatini 2 ga oshiradi. Ushbu ifoda Incr vakiliga tayinlanishi mumkin, chunki u ushbu vakilning deklaratsiyasiga mos keladi.
    Ikkinchi dasturda isEven delegatsiyasiga (agar unga berilgan argument mos bo'lsa) mantiqiylikni qaytaradigan ifoda beriladi, aks holda mantiqiy ifoda yolg’on qiymat qabul qiladi. Shuning uchun, bu lambda ifodasi isEven deklaratsiyasiga mos keladi.

    Yuqoridagilar bilan bog'liq holda, oqilona savol tug'iladi: kompilyator lambda ifodasida ishlatiladigan ma'lumot turini qanday biladi, masalan, vakilga berilgan lambda ifodasidagi hisoblash parametrining int turi haqida ma'lumotni qanday oladi?

    Bu savolga javob quyidagicha: kompilyator parametr turi va ifoda vakili turiga qarab baho beradi va natijasining turi to'g'risida xulosa chiqaradi. Shuning uchun, lambda ifodasining parametrlari vakilning qaytish qiymatiga va qaytarilish qiymati parametrlarga mos kelishi kerak.
    Demak, siz lambda ifoda parametr turini aniq ko'rsatishingiz kerak. Buning uchun ma'lumotlar turiga ma'lum bir nomni kiritish kifoya. Misol sifatida, quyida delegatni e'lon qilishning yana bir usuli mavjud:
    Incr incr = (int x) => x + 2;

    Download 1 Mb.
    1   2   3   4   5   6   7   8   9




    Download 1 Mb.