zoukankan      html  css  js  c++  java
  • 整理

    大部分情况下,我们可以使用系统预定义的委托类型,而不需要自己再来手动定义。

    以下委托都位于System命名空间下。

    传入参数、返回值的类型,大都被声明为泛型。

     

    1、Action系列

    有0-16个参数,无返回值。

    public delegate void Action()
    public delegate void Action<in T>(T obj)
    public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)
    .
    .
    .
    public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16>
    (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16 )

     

    2、Func系列

    有0-16个参数,有1个返回值。

    public delegate TResult Func<out TResult>()
    public delegate TResult Func<in T, out TResult>(T arg)
    public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)
    .
    .
    .
    public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, out TResult>
    (T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16 )

    类型参数列表中,最后一个类型TResult,表示返回值的类型。

     

    3、EventHandler系列

    用于声明事件。

    public delegate void EventHandler(Object sender, EventArgs e)
    public delegate void EventHandler<TEventArgs>(Object sender, TEventArgs e) where TEventArgs : EventArgs

    第一个委托用于不包含数据的事件;第二个委托用于包含数据的事件。

    第一个参数引用引发事件的对象,类型为Object

    第二个参数保存事件数据。如果事件不包含数据,第二个参数类型为EventArgs;否则,第二个参数为EventArgs派生的自定义类型。

    4、其他

    有返回值的几个预定义委托,其实它们都可以用Func委托来表示。

    (1)判断T类型的一个对象,是否符合方法中定义的某些条件。

    public delegate bool Predicate<in T>(T obj)

    (2)比较T类型的两个对象。

    public delegate int Comparison<in T>(T x, T y)

    返回值小于0表示x小于y,返回值等于0表示x等于y,返回值大于0表示x大于y。

    (3)将一个对象从TInput类型转换为TOutput类型。

    public delegate TOutput Converter<in TInput, out TOutput>(TInput input)
  • 相关阅读:
    Step By Step(C++模板类)
    Step By Step(C++模板重载和特化)
    Step By Step(C++模板推演)
    Step By Step(C++模板Policy)
    Step By Step(C++模板参数)
    Step By Step(C++模板解析)
    Step By Step(C++模板Trait)
    Step By Step(C++模板基本技巧)
    离职引发的诸多感触
    Step By Step(C++模板函数)
  • 原文地址:https://www.cnblogs.com/MrEggplant/p/5019640.html
Copyright © 2011-2022 走看看