Example #1
0
        static void Main(string[] args)
        {
            SomeDel[] arr = new SomeDel[3];
            arr[0] += GetRnd;
            arr[1] += GetRnd;
            arr[2] += GetRnd;

            Average average = delegate(SomeDel[] arr)
            {
                int sum = 0;
                foreach (var var in arr)
                {
                    int num = var.Invoke();
                    sum += num;
                    Console.WriteLine(num);
                }
                return((double)sum / arr.Length);
            };

            Console.WriteLine($"average = {average (arr)}");

            int GetRnd()
            {
                Random rnd = new Random();

                return(rnd.Next(20));
            }
        }
Example #2
0
        static void Main()
        {
            //source of data
            List <int> numbers = new List <int> {
                1, 4, 2, 5, 6, 3, 0, 7, 9, 8
            };

            //create delegate to refer a method
            //LogicInvoker logicDel = new LogicInvoker(new Logic().IsOdd);

            //LogicInvoker logicDel = delegate (int num)
            //  {
            //      return num > 3 ? true : false;
            //  };
            //Lambda expression: representing anonymous method
            LogicInvoker logicDel = num => num > 3;

            //pass source of data to be filtered and the logic through a delegate object to filter
            List <int> output = Filter(numbers, logicDel);

            foreach (var item in output)
            {
                Console.WriteLine(item);
            }

            SomeDel sdAdd = delegate(int x, int y)
            {
                return(x + y);
            };
            SomeDel sdSubtract = (a, b) => (a - b);
        }
Example #3
0
        static void Main(string[] args)
        {
            SomeDel <Object, ArgumentException> f1 = o => new ArgumentException();
            SomeDel <String, Exception>         f2 = f1; // демонстрируем одновременно и ковариантность для выходного параметра, и контравариантность для выходного.

            // входной параметр во второй функции передаёт строку туда, где ожидается объект, что нормально
            // выходной параметр во второй функции интерпретирует ArgumentException как Exception, что тоже нормально.
        }
Example #4
0
        private void button8_Click(object sender, EventArgs e)
        {
            //省略了参数,没有使用
            Other del = delegate
            {
                Console.WriteLine("hello word!");
            };
            SomeDel mDel = delegate(int x, int[] y) {
                foreach (int item in y)
                {
                    Console.WriteLine(item);
                }
            };

            del(1);
            Console.WriteLine("===========================");
            mDel(1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 0);
        }
Example #5
0
        public void _01()
        {
            SomeDel someDel = delegate(int x, int[] y) { return(x + y[0]); };

            Assert.Equal(3, someDel(1, 2));
        }
Example #6
0
 public void Init()
 {
     someDel  = StartTime;
     someDel += MessageFromTimerDelegat;
     someDel1 = EndTime;
 }
Example #7
0
        public void _01()
        {
            SomeDel someDel = delegate { return(6); };

            Assert.Equal(6, someDel(0));
        }
Example #8
0
 protected void Dosth(SomeDel d)
 {
     d();
 }