c# 三种常见的委托

Posted sun_dust_shadow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 三种常见的委托相关的知识,希望对你有一定的参考价值。

  参考  《编写高质量代码:改善C#程序的157个建议》 , 尽量使用FCL中的委托声明。

     FCL: FrameWork Class Library

 三种常用:Action、Func、Predicate

小例子:

1.Action :无返回值

    private void AddAction(int a, int b)
    {
        Console.WriteLine(a + b);
    }
    static void Main(string[] args)
    {
        TestCSharpClass myTest = new TestCSharpClass();
        Action<int, int> testAction = myTest.AddAction;
        testAction(1, 2);
    }

2.Func<T1,T2....,out Tn>:有返回值,

    private int AddFuncTest(int a, int b)
    {
        return a + b;
    }
    static void Main(string[] args)
    {
        TestCSharpClass myTest = new TestCSharpClass();
        Func<int, int, int> funcTest = myTest.AddFuncTest;
        Console.WriteLine(funcTest(1,2));
    }

3.Predicate<T>  返回bool值。 一个参数。  在查询接口中比较有用

    private class PreTestClass
    {
        private int a;
        private int b;
        public PreTestClass(int a0, int b0)
        {
            a = a0;
            b = b0;
        }
        public bool TestBool(int ccc)
        {
            if (a + b >= ccc)
            {
                return true;
            }
            return false;
        }
    }
    static void Main(string[] args)
    {
        PreTestClass testClass = new PreTestClass(1, 2);
        Predicate<int> testPredicate = testClass.TestBool;
        Console.WriteLine(testPredicate(4));
    }

 

以上是关于c# 三种常见的委托的主要内容,如果未能解决你的问题,请参考以下文章

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

C#中常见的系统内置委托用法详解(抄录)

C#中常见的系统内置委托用法详解

c#的泛型,委托,反射是啥?

C# 怎样用反射创建的对象的给成员委托实例注册方法

C# 泛型委托的问题