using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpTest
{
public delegate void TestDelegate();
class DelegateClass
{
TestDelegate ss;
void Test1()
{
System.Console.WriteLine("Test1");
}
void Test2()
{
System.Console.WriteLine("Test11");
}
public void TestMain()
{
System.Console.WriteLine("============1==========");
ss += Test1;
ss += Test2;
ss += Test2;
Fire();
System.Console.WriteLine("============2==========");
ss -= Test1;
ss -= Test2;
Fire();
}
void Fire()
{
if(ss!=null)
{
ss.Invoke();
}
}
}
}
输出:
============1==========
Test1
Test11
Test11
============2==========
Test11
总结
1、Delegate的+ -,用IL术语,编译器把其解释为Delegate.Combine 和Delegate.Remove
2、Delegate的+ -,放在一个容器中,可以添加重复的对象
3、Delegate的+ -,的容器中对象为空时,其为空