using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace FrameworkDemo
{
class Program
{
delegate void 攻击委托类型(string a);
static void 八极崩(string a) {
Console.WriteLine("八极崩");
}
static void 焰分噬浪尺(string a)
{
Console.WriteLine("焰分噬浪尺");
}
static void Main(string[] args)
{
// 创建委托链
攻击委托类型 一套连招 = new 攻击委托类型(八极崩);
// 攻击委托类型 一套连招 = 八极崩; // 也可以这样写
一套连招 += 焰分噬浪尺;
// 启动委托
一套连招("吃我一记连招");
Console.ReadLine();
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace FrameworkDemo
{
class Program
{
delegate int 攻击委托类型(string a);
static int 八极崩(string a) {
Console.WriteLine("八极崩");
return 330;
}
static int 焰分噬浪尺(string a)
{
Console.WriteLine("焰分噬浪尺");
return 660;
}
static void Main(string[] args)
{
// 创建委托
攻击委托类型 一套连招 = 八极崩;
一套连招 += 焰分噬浪尺;
// 获取委托链
Delegate[] delList = 一套连招.GetInvocationList();
// 遍历委托链
for (int i = 0; i < delList.Length; i++) {
攻击委托类型 del = (攻击委托类型)delList[i];
// 一次调用委托并获取返回值
int result = del("吃我一套连招");
Console.WriteLine($"攻击伤害:{result}");
}
Console.ReadLine();
}
}
}

using System;
namespace FrameworkDemo
{
class Program
{
static void 八极崩() {
Console.WriteLine("八极崩");
}
static void 焰分噬浪尺(string a)
{
Console.WriteLine("焰分噬浪尺");
}
static string 佛怒火莲(string a) {
Console.WriteLine("佛怒火莲");
return "成功击杀敌军!";
}
static void Main(string[] args)
{
// 不带返回值的委托
Action 攻击委托1 = 八极崩;
攻击委托1();
Action<string> 攻击委托2 = 焰分噬浪尺;
攻击委托2("吃我一击!");
// 带返回值的委托
// <>中的最后一个参数是函数的返回值类型
Func<string, string> 攻击委托3 = 佛怒火莲;
string result = 攻击委托3("绝杀");
Console.ReadLine();
}
}
}