我想我知道委托和时间的区别了
委托可以被外部调用
namespace GrammerTest
{
public delegate void FuncDelegate();
public class DelegateTest
{
public FuncDelegate FuncDelegateObject;
public DelegateTest()
{
FuncDelegateObject = Func1;
FuncDelegateObject += Func2;
}
public void Func1()
{
Console.WriteLine("Func 1");
}
public void Func2()
{
Console.WriteLine("Func 2");
}
}
}
public delegate void FuncDelegate();
public class DelegateTest
{
public FuncDelegate FuncDelegateObject;
public DelegateTest()
{
FuncDelegateObject = Func1;
FuncDelegateObject += Func2;
}
public void Func1()
{
Console.WriteLine("Func 1");
}
public void Func2()
{
Console.WriteLine("Func 2");
}
}
}
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//new ForeachNullList().Run();
new DelegateTest().FuncDelegateObject();
Console.Read();
//Application.Run(new Form1());
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//new ForeachNullList().Run();
new DelegateTest().FuncDelegateObject();
Console.Read();
//Application.Run(new Form1());
}
事件不可以从类的外部发动
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GrammerTest
{
public delegate void ADelegate();
public class EventPublisher
{
public event ADelegate AEvent;
public void Fire()
{
if (AEvent != null)
AEvent();
}
}
internal class EventClient
{
public void Func1()
{
Console.WriteLine("Func 1");
}
}
internal class EventClient2
{
public void Func2()
{
Console.WriteLine("Func 2");
}
}
class EventTest
{
public void Run()
{
EventPublisher ep = new EventPublisher();
EventClient ec1 = new EventClient();
EventClient2 ec2 = new EventClient2();
ep.AEvent += ec1.Func1;
ep.AEvent += ec2.Func2;
//ep.AEvent(); doesn't work
//only
ep.Fire();
}
}
}
using System.Linq;
using System.Text;
namespace GrammerTest
{
public delegate void ADelegate();
public class EventPublisher
{
public event ADelegate AEvent;
public void Fire()
{
if (AEvent != null)
AEvent();
}
}
internal class EventClient
{
public void Func1()
{
Console.WriteLine("Func 1");
}
}
internal class EventClient2
{
public void Func2()
{
Console.WriteLine("Func 2");
}
}
class EventTest
{
public void Run()
{
EventPublisher ep = new EventPublisher();
EventClient ec1 = new EventClient();
EventClient2 ec2 = new EventClient2();
ep.AEvent += ec1.Func1;
ep.AEvent += ec2.Func2;
//ep.AEvent(); doesn't work
//only
ep.Fire();
}
}
}