C# 委托 Action Func

Action<T> : 传递参数,只进不出,所以方法为void

Func<in T, out Tv> : 传递参数,有进有出,所以传递的方法要return

using System;
using System.Collections.Generic;
using System.Linq;

namespace rooxml
{

    public class main
    {
        public delegate void fucA(string s);
        public static void Main ()
        {
            Action<string> ii = (string str) => {
                Console.WriteLine(str);
            };
            new A().bb(ii);

            fucA f = new A().aa;
            f("777");  //委托直接调用
            //new A ().bb (new A().aa);

            Console.WriteLine(
            new A ().cc ((int i)=>{
                return (i*i).ToString();
            })
            );

        }
    }

    class A{
        public A(){ }

        public void aa(string s){
            Console.WriteLine (s+"666");
        }

        public void bb(Action<string> h){
            h ("555");
        }

        public string cc(Func<int, string> c){
            return c(7);
        }

    }
}

https://msdn.microsoft.com/zh-cn/library/bb549151.aspx

时间: 2024-08-10 06:10:21

C# 委托 Action Func的相关文章

C#委托Action、Action&lt;T&gt;、Func&lt;T&gt;、Predicate&lt;T&gt;

CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个委托了,就用系统内置的这几个已经能够满足大部分的需求,且让代码符合规范. 一.Action Action封装的方法没有参数也没有返回值,声明原型为: 1 public delegate void Action(); 用法如下: 1 public void Alert() 2 { 3 Console.Write

[转]C#委托Action、Action&lt;T&gt;、Func&lt;T&gt;、Predicate&lt;T&gt;

CLR环境中给我们内置了几个常用委托Action. Action<T>.Func<T>.Predicate<T>,一般我们要用到委托的时候,尽量不要自己再定义一 个委托了,就用系统内置的这几个已经能够满足大部分的需求,且让代码符合规范. 一.Action Action封装的方法没有参数也没有返回值,声明原型为: 1 public delegate void Action(); 用法如下: 复制代码 1  public void Alert() 2  { 3     Co

委托delegate 泛型委托action&lt;&gt; 返回值泛型委托Func&lt;&gt; 匿名方法 lambda表达式 的理解

1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyBookDel myBookDel; //普通方法 public static void MathBook(int a) { Console.WriteLine("我是数学书" + a); } static void Main(string[] args) { myBookDel += Ma

c# delegate action func predicate event 匿名函数 lambda

1.delegate 是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类. 与其它的类不同,delegate类能够拥有一个签名 (signature),并且它只能持有与它的签名相匹配的方法的引用. 它所实现的功能与C/C++中的函数指针十分相似.它允许你传递一个类A的方法m 给另一个类B的对象,使得类B的对象能够调用这个方法m.但与函数指针相比,delegate有许多函数指针不具备的优点: 首先,函数指针只能指向静态函 数,而delegate既可以引用静态函数,又可以引用非静态成员函

Lambda expressions , Action , Func and Predicate

http://www.tutorialsteacher.com/csharp/csharp-action-delegate lambda 表达式 Action,func lambda表达式是什么,其有什么优点,不使用lambda 其的目的:简化代码. 在JAVA当中一般是使用接口来实现 Action is also a delegate type defined in the System namespace. An Action type delegate is the same as Fun

C#语法糖之第五篇: 泛型委托- Action&lt;T&gt;

因为工作的原因(其实还是个人的惰性)昨天没有给大家分享文章,然后这几天也有很多园友也提出了他们报告的意见及指导,再次感谢这些兄弟们的照顾我 和支持,这个分类的文章我当时想的是把我的学习经验和工作中用到的语法给大家分享给大家,希望能起到帮助的作用,但是本人也是个菜鸟,不是什么大神,所以 学习中也有不足的地方和没有扫到的地方,这里对上次扩展方法语法糖的问题,扩展方法确实是3.0开始就有了,或许是我以前没有用到,也没有查询欠缺,若要给大家带来不便,请大家原谅,现在把标题也修改为C#语法糖了,这里给大家

Lambda Action Func练习

namespace lambda { delegate void TestDelegate(string s); class Program { static void Main(string[] args) { //动态构建C# Lambda表达式例子1 var ints = new int[10] {10,2,3,4,5,2,34,54,4,40}; var newints = ints.Where(i => i > 20); foreach (var a in newints) { Co

C#学习笔记:泛型委托Action&lt;T&gt;和Fun&lt;TResult&gt;

转自:http://www.cnblogs.com/Joetao/articles/2094271.html 本节学习了泛型委托Action<T>和Fun<TResult>两类特殊的委托,这两个特殊的委托是Dot FrameWrok自带的.结合lambda表达式,可以在写程序时,简洁代码和提高编码效率. (一)Action<T>和Fun<TResult>两个委托的不同点: Action<T>只能委托必须是无返回值的方法 Fun<TResul

C#的泛型委托Predicate/Func/Action

Predicate<T> 是一个委托,它代表了一个方法,它的定义是: namespace System {    // 摘要:    表示定义一组条件并确定指定对象是否符合这些条件的方法.  // 参数:    //   obj:    要按照由此委托表示的方法中定义的条件进行比较的对象.  // 类型参数:    //   T:    要比较的对象的类型.        // 返回结果:    //     如果 obj 符合由此委托表示的方法中定义的条件,则为 true:否则为 false