c#委托把方法当成参数(实例讲解)
发布时间:2021-07-29 04:38:14
静态方法代理:
public delegate void DoGreeting(string name);
class Program
{
[STAThread]
static void Main(string[] args)
{
//方法名当成参数传给委托类型调用
MarkGreeting("张三", GreetingEnglish);
MarkGreeting("李四", GreetingChinese);
}
/// <summary>
/// 委托(代理的方法)
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
private static void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// 用英文打招呼
/// </summary>
/// <param name="name"></param>
private static void GreetingEnglish(string name)
{
Console.WriteLine(name+"hello!");
}
/// <summary>
/// 用中文打招呼
/// </summary>
/// <param name="name"></param>
private static void GreetingChinese(string name)
{
Console.WriteLine(name+"你好!");
}
}
实例方法代理:
public delegate void DoGreeting(string name);
public class Greeting
{
/// <summary>
/// 委托(代理的方法)
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
public void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// 用英文打招呼
/// </summary>
/// <param name="name"></param>
public void GreetingEnglish(string name)
{
Console.WriteLine(name + "hello!");
}
/// <summary>
/// 用中文打招呼
/// </summary>
/// <param name="name"></param>
public void GreetingChinese(string name)
{
Console.WriteLine(name + "你好!");
}
}
class Program
{
[STAThread]
static void Main(string[] args)
{
Greeting greetingObj = new Greeting();
greetingObj.MarkGreeting("张三", greetingObj.GreetingEnglish);
greetingObj.MarkGreeting("李四", greetingObj.GreetingChinese);
}


猜你喜欢
- 栈和队列的本质是相同的,都只能在线性表的一端进行插入和删除。因此,栈和队列可以相互转换。用栈实现队列—力扣232题题目要求:仅使用两个栈实现
- 日期格式处理在控制器中使用对象接收数据前端:<form action="test/add" method=&quo
- 一、实现效果本篇文章实现了简单的图片轮播,初始化3张资源图片,初始化3秒更换一次图片背景,轮换播放。二、知识点Thread线程start()
- 这篇讲的是如何生成一个自定义的ImageView,实现自动放大缩小动画。 为什么实现这个功能呢?因为我想在ViewPager实现图片放大缩小
- 本文实例为大家分享了Unity3d实现Flappy Bird的具体代码,供大家参考,具体内容如下一、小鸟在游戏中,小鸟并不做水平位移,而是通
- 根据之前学的Android对话框技术,来实现下面一个效果:界面有一个"退出"按钮,按下之后会弹出一个询问是否退出的提示对
- 1、什么是反射?在java开发中有一个非常重要的概念就是java反射机制,也是java的重要特征之一。反射的概念是由Smith在1982年首
- Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来。用ph
- 前段时间,有个同事说“30000000000000000000000000000000000000000000000000000000000
- * 什么是 * Spring MVC中的 * (Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户
- 一、Druid简介Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。当然Druid不仅仅是一
- java获取map中value最大值public static void main(String[] args) throws Interr
- 对数组使用 foreachC#提供 foreach 语句。 该语句提供一种简单、明了的方法来循环访问数组或任何可枚举集合的元素。 forea
- springmvc下载中文文件名称为下划线springboot项目中,在下载文件的时候,通过封装ResponseEntity,将文件流写入b
- 在 Java 中,当我们处理String时,有时需要将字符串编码为特定字符集。编码是一种将数据从一种格式转换为另一种格式的方法。字符串对象使
- 本文实例讲述了Java接口的简单定义与实现方法。分享给大家供大家参考,具体如下:1、接口是Java中最终要的概念,接口可以理解为一种特殊的类
- delegate double ProcessDelegate(double param1, double param2); &n
- 1.问题分析我们在开发中经常遇到多个实体类有共同的属性字段,例如在用户注册时需要设置创建时间、创建人、修改时间、修改人等字段,在用户编辑信息
- 1、获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图(1)缺点就是必须更新媒体库才能看到最新的视频的缩略图[java]
- 本次和大家分享的是怎么来消费服务,上篇文章讲了使用Feign来消费,本篇来使用rest+ribbon消费服务,并且通过轮询方式来自定义了个简