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