C# Func<T,TResult>

    using System;

    namespace FuncDemo
    {
        internal class Program
        {
            private static void Main()
            {
                //类似委托功能
                Func<InputArgs, Result> func = TsetFunction;
                Console.WriteLine("第一种方式:");
                Console.WriteLine(func(new InputArgs("zhangqs008", "123456")));

                Console.WriteLine("=============================================");

                Console.WriteLine("第二种方式:");
                CallMethod(func, new InputArgs("zhangqs008", "1234567")); //或者
                CallMethod(TsetFunction, new InputArgs("zhangqs008", "1234567"));

                Console.Read();
            }

            public static Result TsetFunction(InputArgs input)
            {
                Result result = new Result();
                result.Flag = String.Compare("zhangqs008", input.UserName, StringComparison.OrdinalIgnoreCase) == 0 &
                    String.Compare("123456", input.Password, StringComparison.OrdinalIgnoreCase) == 0;
                result.Msg = "当前调用者:" + input.UserName;
                return result;
            }

            public static void CallMethod<T>(Func<T, Result> func, T item)
            {
                Result result = func(item);
                Console.WriteLine(result.ToString());
            }
            /// <summary>
            /// 方法参数
            /// </summary>
            public class InputArgs
            {
                public InputArgs(string userName, string password)
                {
                    UserName = userName;
                    Password = password;
                }

                public string UserName { get; set; }
                public string Password { get; set; }
            }

            /// <summary>
            /// 方法结果
            /// </summary>
            public class Result
            {
                public string Msg { get; set; }
                public bool Flag { get; set; }
                public override string ToString()
                {
                    return string.Format("Flag:{0},Msg:{1}", Flag, Msg);
                }
            }

        }
    }  

http://blog.csdn.net/a497785609/article/details/8282785

时间: 2024-10-06 00:53:26

C# Func<T,TResult>的相关文章

Expression&lt;Func&lt;T,TResult&gt;&gt;和Func&lt;T,TResult&gt; 与AOP与WCF

1>>Expression<Func<T,TResult>>和Func<T,TResult>http://www.cnblogs.com/xcsn/p/4520081.htmlhttp://www.cxyclub.cn/n/63037/http://q.cnblogs.com/q/37952/2>>AOP与WCFhttp://www.oschina.net/question/2245602_178068?sort=timehttp://www.c

Expression&lt;Func&lt;T,TResult&gt;&gt;和Func&lt;T,TResult&gt;

1.Expression<Func<T,TResult>>是表达式 //使用LambdaExpression构建表达式树 Expression<Func<int, int, int, int>> expr = (x, y, z) => (x + y) / z; Console.WriteLine(expr.Compile()(1, 2, 3)); https://msdn.microsoft.com/zh-cn/library/system.linq.

Func&lt;T,TResult&gt;泛型委托

描述: 封装一个具有一个参数并返回TResult参数指定的类型值的方法. 语法: public delegate TResult Func<T,TResult>(T arg); 参数类型: T:此委托封装的方法的参数类型. TResult:此委托封装的方法的返回值类型. 参数: arg:委托封装的方法的参数 返回值:此委托封装的方法的返回值 备注: 可以使用此委托构造一个能以参数形式传递的方法,而不用显式声明自定义的委托.该方法必须与此委托的方法签名想对应. 也就是说,封装的方法必须具有一个通

Func&lt;T,TResult&gt;代理

.NET平台已经发生了很多变化,最近决定好好的系统的学习一下了,开发做了这么多年,老实说很多时候都是在吃老本,这样下去不行的... 今天学习的是Func<T,TResult>,它是新的委托申明方式,较之前的简洁多了. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BaiduTranslate { class LambdaTest { delegate

C#中Func&lt;T,TResult&gt;的用法和Lambda表达式

在C#3.0中引用了Limbda表达式,Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)代码片段: Func<int,string,string> t=(int x, string b) => (x.ToString() + b);就等于如下: private string deletegate TestString(int x string b );//定义一个委托,返回值为string类型 private string test(int x strin

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

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

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种形式,只是参数个数不同:第一个是无参数,但是有返回值: 下面是一个简单的普通委托来

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

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

浅谈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