泛型委托當參數傳遞


假如有一個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"; });
    //第五種寫法(用Lambda表達式)
    SetNum(u => u.Name = "Name");
}

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM