泛型委托当参数传递

Posted 黄者之风

tags:

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

假如有一个Person类:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string Title { get; set; }
}

执行一个方法:

/// <summary>
/// 传递一个泛型委托方法
/// </summary>
/// <param name="action"></param>
public static void SetNum(Action<Person> action)
{
    Person person = new Person();
    //前面的代码
    //......
    action(person);
    //后面的代码 
    //......
}

调用:

static void Main(string[] args)
{
    //第一种写法(写一个方法,然后当参数传进来)
    SetNum(Set1);
    //第二种写法(声明一个委托变量,赋一个匿名方法,然后当参数传进来)
    Action<Person> action = delegate(Person person) { person.Name = "Tom"; };
    SetNum(action);
    //第三种写法(直接new出一个泛型Action,然后赋一个匿名方法,全写)
    SetNum(new Action<Person>(delegate(Person person) { person.Name = "Name"; }));
    //第四种写法(直接new出一个匿名方法,简写版)
    SetNum(delegate(Person person) { person.Name = "Name"; });
}

public static void Set1(Person person)
{
    person.Name = "Name";
}

 

以上是关于泛型委托当参数传递的主要内容,如果未能解决你的问题,请参考以下文章

C#规范整理·泛型委托事件

编写高质量代码改善C#程序的157个建议——建议45:为泛型类型参数指定逆变

C#规范整理·泛型委托事件

C# Action<T;和 Func<T;委托

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

委托泛型委托异步委托(新人,有问题请指出,有部分代码是拿其他博客主的)