C#使用Func

using System;

namespace Bank
{
    public class Pay
    {
        public string Send<T, T2>(Func<T, Bank.User, string> funcDo, T context, Bank.User model, Func<string, string> funcLog, Func<string, string> funcDoOther)
        {
            string result = string.Empty;
            try
            {
                int x = 0;
                model.Id = "99";
                model.Name = "戴新清";
                model.Pwd = "888888";
                result = funcDo(context, model);
                x = x / x;
            }
            catch (Exception ex)
            {
                result = "错误";
                funcLog(ex.ToString());
            }
            finally
            {
                funcDoOther("总计");
            }
            return result;
        }
    }
}
using System;
namespace Bank
{
    public class User
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Pwd { get; set; }
        public static string Money = "999999999.00";
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Bank.Pay pay = new Bank.Pay();
        Bank.User model = new Bank.User();
        string result = pay.Send<System.Web.HttpContext, Bank.User>(TestMethod, Context, model, Log, DoOther);
        Response.Write(result);
        Response.End();
    }

    public string TestMethod(System.Web.HttpContext context, Bank.User model)
    {
        context.Response.Clear();
        context.Response.Write("<br />Id:" + model.Id + ",Name:" + model.Name + ",Pwd:" + model.Pwd + ",Money:" + Bank.User.Money);
        return "我是戴新清";
    }

    public string Log(string ex)
    {
        Response.Write("<br/>"+ex);
        return "0";
    }

    public string DoOther(string ex)
    {
        Response.Write("<br/>write");
        return "6";
    }
}
时间: 2024-08-09 10:44:20

C#使用Func的相关文章

Func与Action

Func与Action C#委托的介绍(delegate.Action.Func.predicate) Func和Action委托的区别和简单使用

C#学习日记25---匿名方法 与 Func委托 与 lambda表达式

       在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法.C# 2.0 引入了匿名方法(委托),而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式. 匿名委托(方法): 匿名委托的叫法并不准确,准确的应该叫做匿名方法,(总之两者是一个意思啦).前面  委托类型  中我已经提到过,委托是用于引用与其具有相同标签的方法.换句话说,您可以使用委托对象调用可由委托引用的方法(参数是方法名).而匿名方法则是将代码块作为委托参数(参数是实

Func的介绍

经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Func<int,bool>的Func转到定义看它的解释: // 摘要: // 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法. // // 参数: // arg: // 此委托封装的方法的参数. // // 类型参数: // T: // 此委托封装的方法的参数类型. // // TResult: // 此委托封装的方法的返回值类型. //

Func&lt;T&gt;、Action&lt;T&gt; 的区别于说明

一.Func Func是一个.Net内置的委托. Func<Result>,Func<T1,Result>是一个.Net内置的泛型委托. Func<TResult> Func<T,TResult> Func<T1,T2,TResult> Func<T1,T2,T3,TResult> Func<T1,T2,T3,T4,TResult> 它有5种形式,只是参数个数不同:第一个是无参数,但是有返回值: 下面是一个简单的普通委托来

异步委托(APM)使用Func异步操作,处理耗时操作

使用委托进行异步操作,处理一些耗时操作,防止主线程阻塞 使用例子: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Demo 7 { 8 class Program 9 { 10 11 static void Main(string[] args) 12 { 13 Func<string> fun = new Func<s

C#高级功能(三)Action、Func,Tuple

Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性.基本涵盖了所有常用的委托,所以一般不用用户重新声明. Action系列泛型委托,是没有返回参数的委托,最多可以有16参数,也可以没有参数:Func系列的委托是有返回值的委托,最多可以有16个参数: 元组是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本.元组使用泛型来简化一个类的定义. 提供用于创造元组对象的静态方法.最多可以提供创建新的 8 元

表达式拼接Expression&lt;Func&lt;IEntityMapper, bool&gt;&gt; predicate

/// <summary> /// 重写以筛选出当前上下文的实体映射信息 /// </summary> protected override IEnumerable<IEntityMapper> EntityMappersFilter(IEnumerable<IEntityMapper> entityMappers) { Type contextType = typeof(TDbContext); Expression<Func<IEntityM

C#委托的介绍(delegate、Action、Func、predicate)

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明   Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型.   例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型. (2). Action Action是无返回值的泛型委托. Action 表示无参,

浅谈C#中常见的委托&lt;Func,Action,Predicate&gt;(转)

http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html 一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不用多废话了. 今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predi

从var func=function 和 function func()区别谈Javascript的预解析机制

var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function xx(){return 5;} } 不会出错,而 { var k = xx(); var xx = function(){return 5;} } 则会出错. 为什么会这样呢?这就要引出javascript中的预解析机制来解释了. JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个