LGX.NET
漂泊...
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace MouseGame
{
    
internal delegate void Feedback(int value);

    
public sealed class Program
    {
        
public static void Main()
        {

        }
        
public static void StaticDelegateDemo()
        {
            Console.WriteLine(
"------------static delegate demo-------------");
            Counter(
13null);
            Counter(
13new Feedback(Program.FeedbackToConsole));
            Counter(
13new Feedback(FeedbackToMsBox));
            Console.WriteLine();

        }
        
//实例委托
        private static void InstanceDelegateDemo()
        {
            Console.WriteLine(
"------Instance Delegate Demo----------");
            Program p 
= new Program();
            Counter(
13,new Feedback(p.FeedbcakToFile));
            Console.WriteLine();
        }
        
//链式委托1
        private static void ChainDelegateDemo1(Program p)
        {
            Console.WriteLine(
"--------Chain Delegate Demo 1----------");
            Feedback fb1 
= new Feedback(FeedbackToConsole);
            Feedback fb2 
= new Feedback(FeedbackToMsBox);
            Feedback fb3 
= new Feedback(p.FeedbcakToFile);

            Feedback fbChain 
= null;
            fbChain 
= (Feedback)Delegate.Combine(fbChain, fb1);
            fbChain 
= (Feedback)Delegate.Combine(fbChain, fb2);
            fbChain 
= (Feedback)Delegate.Combine(fbChain, fb3);
            Counter(
13, fbChain);
            Console.WriteLine();

            fbChain 
= (Feedback)Delegate.Remove(fbChain, new Feedback(FeedbackToMsBox));
            Counter(
12, fbChain);
        }
        
//链式委托2
        private static void ChainDelegateDemo2(Program p)
        {
            Console.WriteLine(
"--------Chain Delegate Demo 2 ------------");
            Feedback fb1 
= new Feedback(FeedbackToConsole);
            Feedback fb2 
= new Feedback(FeedbackToMsBox);
            Feedback fb3 
= new Feedback(p.FeedbcakToFile);

            Feedback fbChain 
= null;
            fbChain 
+= fb1;
            fbChain 
+= fb2;
            fbChain 
+= fb3;
            Counter(
12, fbChain);

            Console.WriteLine();
            fbChain 
-= new Feedback(FeedbackToMsBox);
            Counter(
12, fbChain);

        }

        
private static void FeedbackToConsole(int value)
        {
            Console.WriteLine(
"Item=" + value);
        }
        
private static void FeedbackToMsBox(int value)
        {
            System.Windows.Forms.MessageBox.Show(
"Item=" + value);
        }
        
private void FeedbcakToFile(int value)
        {
            StreamWriter sw 
= new StreamWriter("status"true);
            sw.WriteLine(
"Ites="+value);
            sw.Close();
        }
        
private static void Counter(int from, int to, Feedback fb)
        {
            
for (int val = from; val <= to; val++)
            {
                
if (fb != null)
                {
                    fb(val);
                }
            }
        }
    }

}
posted on 2006-12-17 23:30  LGX.NET  阅读(141)  评论(0)    收藏  举报