专业编程基础技术教程

网站首页 > 基础教程 正文

C#面试题-委托 c#委托有什么好处

ccvgpt 2024-10-12 14:10:55 基础教程 9 ℃

如何理解委托?

  1. 委托的定义:

委托是一种类型安全的函数指针,用于存储对方法的引用,允许将方法作为参数传递、存储对方法的引用,允许动态的指定要执行的方法。

  1. 委托的声明:

委托通过 delegate关键字定义可以指定委托可以引用的方法的签名

C#面试题-委托 c#委托有什么好处

// 定义一个委托类型,用于引用一个方法

delegate void MyDelegate();

  1. 委托实例化

// 实例化委托并指定方法

MyDelegate myDelegate = new MyDelegate(Method1);

  1. 委托调用:

// 调用委托,委托会执行它所持有的方法

myDelegate();

  1. 委托的主要作用有哪些?
  • 实现回调机制
  • 事件处理
  • 异步编程

具体代码部分:

using System;


// 定义一个委托类型,用于引用折扣计算方法
delegate double DiscountCalculation(double totalPrice);


class Program

{

static void Main()

{

// 模拟不同会员等级的折扣计算方法

// 基础会员 9折

DiscountCalculation basicMemberDiscount = totalPrice => totalPrice * 0.9;

// 高级会员 8折

DiscountCalculation premiumMemberDiscount = totalPrice => totalPrice * 0.8;

// VIP会员 7折

DiscountCalculation vipMemberDiscount = totalPrice => totalPrice * 0.7;


// 模拟用户会员等级

string memberLevel = "VIP"; // 假设用户是VIP会员

// 根据会员等级动态选择折扣计算方法
DiscountCalculation discountMethod;

switch (memberLevel)

{

case "Basic":

discountMethod = basicMemberDiscount;

break;

case "Premium":

discountMethod = premiumMemberDiscount;

break;

case "VIP":

discountMethod = vipMemberDiscount;

break;

default:

discountMethod = totalPrice => totalPrice; // 默认不打折 break;

}

}

}

  1. 多播委托

将多个方法赋值给同一个委托,使委托持有多个方法的应用,并依次调用这些方法。

// 定义一个委托类型,用于引用一个方法

delegate void MyDelegate();
class Program

{

static void Main()

{

// 实例化委托并绑定多个方法

MyDelegate myDelegate = Method1;

myDelegate += Method2;

myDelegate += Method3;


// 调用多播委托,依次执行绑定的方法

myDelegate();

}

}

Tags:

最近发表
标签列表