Exemple #1
0
        public override void Cooking(int money)
        {
            var     joey    = new Joey();
            GetSalt getSalt = joey.BuySalt;

            Console.WriteLine("C#1.0的媽媽,花{1}元,透過Joey的BuySalt(),拿{0}炒菜", getSalt(money).Name, money.ToString());
        }
Exemple #2
0
        public delegate Salt GetSalt(int money); //定義委派的簽章

        public override void Cooking(int money)
        {
            #region 宣告變數,assign joey的BuySalt()給變數
            var     joey    = new Joey();
            GetSalt getSalt = new GetSalt(joey.BuySalt);
            #endregion
            Console.WriteLine("C#1.0的媽媽,花{1}元,透過Joey的BuySalt()結果,拿{0}炒菜", getSalt(money).Name, money.ToString());
            //--------------------
            //實際執行委派
        }
Exemple #3
0
        public override void Cooking(int money)
        {
            GetSalt getSalt = x =>
            {
                if (x > 100)
                {
                    return(new RockSalt());
                }
                else
                {
                    return(new SeaSalt());
                }
            };

            Console.WriteLine("C#3.0的媽媽, 花{1}元,透過lambda敘述式結果,拿{0}炒菜", getSalt(money).Name, money.ToString());
        }
Exemple #4
0
        public override void Cooking(int money)
        {
            //delegate(參數){委派執行內容}
            GetSalt getSalt = delegate(int moneyForSalt)
            {
                if (moneyForSalt > 100)
                {
                    return(new RockSalt());
                }
                else
                {
                    return(new SeaSalt());
                }
            };

            Console.WriteLine("C#2.0的媽媽, 花{1}元,透過匿名delegate方法結果,拿{0}炒菜", getSalt(money).Name, money.ToString());
        }
Exemple #5
0
        public override void Cooking(int money)
        {
            GetSalt getSalt = new GetSalt(
                moneyForSalt =>                 //1.不再透過delegate關鍵字宣告,而透過=>代表
            {                                   //2.可以不必宣告參數型別(除非推斷不出來)
                if (moneyForSalt > 100)         //3.只有一個參數,可以不用加小括號()
                {
                    return(new RockSalt());
                }
                else
                {
                    return(new SeaSalt());
                }
            });

            Console.WriteLine("C#1.0的媽媽,花{1}元,透過Joey的BuySalt()結果,拿{0}炒菜", getSalt(money).Name, money.ToString());
            //--------------------
            //實際執行委派
        }
Exemple #6
0
        public delegate Salt GetSalt(int money); //定義委派的簽章

        public override void Cooking(int money)
        {
            GetSalt getSalt = new GetSalt
                              (
                delegate(int moneyForSalt)          //直接撰寫委派方法的內容,assign給getSalt變數
            {
                if (moneyForSalt > 100)
                {
                    return(new RockSalt());
                }
                else
                {
                    return(new SeaSalt());
                }
            }
                              );

            Console.WriteLine("C#2.0的媽媽,花{1}元,透過Joey的BuySalt()結果,拿{0}炒菜", getSalt(money).Name, money.ToString());
            //--------------------
            //實際執行委派
        }