Delegate


It is a class. Un like a class it contains signature.
And it is capable to hold the methods which are matches to its signature.
When you invoke the deleage it executes method what it holds.


1) You can send methods as parameters to another method

 Different Types of delegates

 Annoymous methods : allows you to create methods on the fly without name and assign them to delegate.

 Lamda Expressions and statements 


 protected void Page_Load(object sender, EventArgs e)
        {
            MyDelegate objDel = BgNuimber;
            Response.Write(objDel(34, 6));
            Response.Write("
");

            //anonymous method
           //objDel = delegate(int x, int y) { return x + y; };

            //lamda Expression
            //objDel = (int x, int y) => x + y;
            objDel = (x, y) => 6;
            
            Response.Write(objDel(6, 6));

            //RunMethods(BgNuimber, 565, 34);
            //RunMethods(ProductNumbers, 4, 4);
        
        }

        public void RunMethods(MyDelegate myDel, int x, int y)
        {
            Response.Write(myDel(x,y));
            Response.Write("
");
        }


        public int BgNuimber(int a, int b)
        {
            int bigNumber;

            if (a > b)
                bigNumber = a;
            else
                bigNumber = b;

            return bigNumber;
        }

        public int ProductNumbers(int x, int y)
        {
            return x * y;
        }


     if you want a return value method binding to delegate --> goto function delegates
            Func myFucionDel = BgNuimber;
            Response.Write(myFucionDel(34, 356));


     if you want void method binding to delegate --> goto function delegates
            Action myActionDel = delegate(int no, string name) { Response.Write("Your Number is : " + no.ToString() + "
" + "Your name is " + name); };
                myActionDel(5486," Ravi KVS");


        protected void Page_Load(object sender, EventArgs e)
        {
            List myList = new List() { 344, 6, 222, 9, 11,     };

            var newList = myList.Where((n) =>
                {
                    int r;
                    int rev = 0;
                    int m = n;

                    while (m != 0)
                    {
                        r = m % 10;
                        rev = rev * 10 + r;
                        m = m / 10;
                    }
                    return n == rev;
                });

            //Code to check even numbers
            //var newList =  myList.Where((n) => n % 2 == 0);
            //var newList = myList.Where((n) => CheckEven(n));

            //Code to return alternate Numbers
            //var newList =  myList.Where((n, i) => i % 2 != 0); 
            foreach (var n in newList)
            {
                Response.Write(n);
                Response.Write("
");
            }
        }

No comments:

Post a Comment