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(1, 3, null);
Counter(1, 3, new Feedback(Program.FeedbackToConsole));
Counter(1, 3, new Feedback(FeedbackToMsBox));
Console.WriteLine();
}
//实例委托
private static void InstanceDelegateDemo()
{
Console.WriteLine("------Instance Delegate Demo----------");
Program p = new Program();
Counter(1, 3,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(1, 3, fbChain);
Console.WriteLine();
fbChain = (Feedback)Delegate.Remove(fbChain, new Feedback(FeedbackToMsBox));
Counter(1, 2, 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(1, 2, fbChain);
Console.WriteLine();
fbChain -= new Feedback(FeedbackToMsBox);
Counter(1, 2, 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);
}
}
}
}
}
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(1, 3, null);
Counter(1, 3, new Feedback(Program.FeedbackToConsole));
Counter(1, 3, new Feedback(FeedbackToMsBox));
Console.WriteLine();
}
//实例委托
private static void InstanceDelegateDemo()
{
Console.WriteLine("------Instance Delegate Demo----------");
Program p = new Program();
Counter(1, 3,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(1, 3, fbChain);
Console.WriteLine();
fbChain = (Feedback)Delegate.Remove(fbChain, new Feedback(FeedbackToMsBox));
Counter(1, 2, 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(1, 2, fbChain);
Console.WriteLine();
fbChain -= new Feedback(FeedbackToMsBox);
Counter(1, 2, 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);
}
}
}
}
}
浙公网安备 33010602011771号