委托系列整理

using ConsoleAppDelegate;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebDelegateFor_Ref_Out
{
public partial class delegateDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 1、原始委托demo
//TestClass tc=new TestClass();
// string name = "测试";
// tc.TestMethod(name, ShowInfo);//这个方法执行时候,执行的内部委托部分,会执行到2部分
#endregion

#region 2、常规委托使用
//Action ac = ShowInfo;//第一种采用方法直接赋予
//ac();

//第二种采用委托委托关键字做具体,这是一种简化,关键字
//Action ac1 = delegate{

// Response.Write("</br>这是测试net中系统已经定义过无返回值,无参数的Action委托,这是采用匿名方法的使用");
//};
//ac1();

#endregion

#region 3、匿名方法委托的使用
//匿名方法的委托更是一种简化
//Action at = () =>
//{
// Response.Write("</br>这是测试net中系统已经定义过无返回值,无参数的Action委托,这是采用匿名方法的使用");

//};

//at();
#endregion

#region 4、多播委托
//Action att = ShowInfo;
//att += ShowInfo1;
//att();
#endregion
//自定义加delegate后缀,系统自带的使用Handler
List<int> list = new List<int>() { 1,2,3,4,5,6,7,8,9,10};

bool resultAll= list.All(x => x > 6);//要传入的委托Func<int,bool> 传入int 参数,返回值为bool的方法,list.ALL这个返回值和委托的返回值是否是一样的呢?
bool resultAny= list.Any(x => x > 6);

Response.Write("");

}

//2,委托使用时候,回来这里调用具体的方法
public void ShowInfo(string name) {
Response.Write(name);
}

//无返回值方法,
public void ShowInfo(){
Response.Write("这是测试net中系统已经定义过无返回值,无参数的Action委托");
}
public void ShowInfo1()
{
Response.Write("这是测试net中系统已经定义过无返回值,无参数的Action委托");
}
}
}

----------------------------------------------------有些类同,不过底下有写内容比较详细

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebDelegateFor_Ref_Out
{
public partial class Delegate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 1、正常委托的使用
//string firstEvernt = User("test");

/////do是关键字,不能用
//deleOut str = new deleOut(User);

//string delegateStr = str("k");//简写

// str.Invoke("k");完整写法

//Response.Write(delegateStr);
#endregion
#region 2、委托中使用匿名lambda,微软很多方法都是这么写的,可以起到伪装的作用,加了一层防护壳,也是多层安全性

///(x) => {
/// return "你好!";这个是直接把方法写到委托中,另外写方法的

///}
///多参数就是(x,y)=>{
/// x,y分别表示参数
/// 只是采用匿名的方式传递
///
/// }
///
///
///x=>x.user.equals(5) 是这个参数
deleOut dele = new deleOut((x) =>
{
if (x == "什么")
{
return "你好!";
}
else
{

return "dfasdfdasf!";
}

});

string user = dele("什么");

Response.Write(user);
#endregion
string t = "";
// Activator.CreateInstance(Type.GetType(t));
//声明的委托与方法的参数一致,返回类型也要一致,委托就是copy了方法的功能换个名字而已。

deleOutData dlod = new deleOutData(test.MathData);
Response.Write(dlod(1));
}

#region 委托说明

//1、普通委托
//2、多播委托
//3、lambda表达式真正在委托中的使用
//4、Func、Action 表示的意思,Func<int,bool> 表示有返回值,int是传入参数类型,bool是返回值的类型
// Action<int> 表示无返回值

//5、 直接看List.FindAll() 方法,内部传递的也是委托,具体使用看,反编译

#endregion

/// <summary>
///
/// </summary>
/// <param name="qt"></param>
/// <returns></returns>
public static string User(string qt){

qt="user";

return qt;
}

}
public class test{

public static int MathData(int data) {

return data * 2;
}

}

/// <summary>
/// 委托,是数据类型,相当于一个类的级别,不要写在类里面,不要成为内部类的
/// </summary>
/// <param name="type"></param>
public delegate string deleOut(string type);

public delegate int deleOutData(int data);
}

时间: 2024-07-29 20:32:13

委托系列整理的相关文章

委托知识整理笔记

委托知识整理笔记 一.委托基础 1.1   委托是什么 与类.枚举.结构.接口一样,委托也是一种类型.类是对对象的抽象,委托是对函数的抽象.一个委托代表了具有相同参数列表和返回值的(具有相同签名(signature))所有函数. 1.2   为什么要使用委托?能给我带来哪些好处? 有时在程序设计时,某個方法在执行时可能需要根据不同情形做不同处理并且这些情形根据时间可能还会有变动,所以这部分代码没法写死.所以C#就设计了委托来处理这些情形,将这些变化不定的细节交由委托来处理,委托来代理多个类似的处

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

Redis系列整理

0.Redis系列-安装部署维护篇 1.Redis系列-远程连接redis并给redis加锁 2.Redis系列-存储篇string主要操作函数小结 3.Redis系列-存储篇list主要操作函数小结 4.Redis系列-存储篇set主要操作函数小结 5.Redis系列-存储篇hash主要操作函数小结 6.使用场景   redis 五种数据类型的使用场景 Nosql 介绍及其使用场景 Redis内存使用优化与存储 HA(High Available), 高可用性群集

C# 委托系列(一)将方法作为方法的参数

http://t.qq.com/baijialeyi6756 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在.本文中,我将通过两个范例由浅入深地讲述什么是委托.为什么要使用委托.事件的由来.委托和事件对Observer设计模式的意义..Net Framework中的委托和事件,对它们的中间代

[Oracle系列整理02] 游标使用全解

-- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare       --类型定义       cursor c_job       is       select empno,ename,job,sal       from emp       where job='MANAGER';       --定义一个游标变量v_cinfo c_emp%

[Oracle系列整理01]PL/SQL 基本查询与排序

本课重点:    1.写SELECT语句进行数据库查询    2.进行数学运算    3.处理空值    4.使用别名ALIASES    5.连接列    6.在SQL PLUS中编辑缓冲,修改SQL SCRIPTS    7.ORDER BY进行排序输出.    8.使用WHERE 字段. 一.写SQL 命令:      不区分大小写.      SQL 语句用数字分行,在SQL PLUS中被称为缓冲区.      最后以:或 / 结束语句.      也可以用RUN来执行语句 二.例1:

[Oracle系列整理03] oracle常用函数

一)日期函数[重点掌握前四个日期函数]1.add_months[返回日期加(减)指定月份后(前)的日期] add_months(d1,n1)[功能]:返回在日期d1基础上再加n1个月后新的日期.[参数]:d1,日期型,n1数字型[返回]:日期select sysdate,add_months(sysdate,3)  from dual;返回:2015/3/2 22:22:50,2015/6/2 22:22:50 2.last_day [返回该月最后一天的日期] last_day(d1)[功能]:

《Yaf零基础学习总结》系列技术文章整理收藏

<Yaf零基础学习总结>系列技术文章整理收藏 Yaf零基础学习总结系列整理了Yaf的基础知识,对于Yaf入门的学习有很大的参考借鉴,收藏在这里,自己用到Yaf的时候随时查阅 1关于Yaf的一些说明[转Yaf作者]http://www.lai18.com/content/407120.html 2Yaf零基础学习总结1-Yaf框架简介http://www.lai18.com/content/407123.html 3Yaf零基础学习总结2-Yaf框架的安装http://www.lai18.com

提升性能-事件委托技术

--- title: 提升性能——事件委托技术 date: 2016-05-11 22:13:43 tags: [javascript,improving performance, font-end] --- 提升页面性能之事件委托技术 (整理摘选自<Javascript高级程序设计>)概述 利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 实际例子 HTML部分 <ul id = "mylinks"> <li id = "g