zoukankan      html  css  js  c++  java
  • Part 100 Func delegate in c#

    What is Func<T,TResult> in C#?

    In simple terms,Func<T,TResult> is just generic delegate. Depending on the requirement,the type parameters(T and TResult) can be replaced with the corresponding(对应的) type arguments.

    For example,Func<Employee,string> is a delegate that represents(代表) a function expecting(期待) Employee object as an input parameter and returns a string.

    class Program
        {
            static void Main(string[] args)
            {
                List<Employee> employees = new List<Employee>() { 
                    new Employee{ID=101,Name="lin1"},
                    new Employee{ID=102,Name="lin2"},
                    new Employee{ID=103,Name="lin3"}
                };
    
                //Func<Employee, string> selector = e => "name=" + e.Name;
                IEnumerable<string> employeeNames = employees.Select(e => "name=" + e.Name);
                foreach (string name in employeeNames)
                {
                    Console.WriteLine(name);
                }
    
            }
        }
        class Employee
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
    View Code

    What is the difference between Func delegate and lambda expression?

    They're the same, just two different ways to write the same thing. The lambda syntax is newer, more concise(简洁) and easy to write.

    What if I have to pass two or more input parameters?

    As of this recording there are 17 overloaded versions of Func, which enables us to pass variable number and type of input parameters. In the example below, Func<int,int,string> represents a function that expects 2 int input parameters and returns a string.

    class Program
        {
            static void Main(string[] args)
            {           
                Func<int, int, string> funcDelegate = (num1, num2) => (num1 + num2).ToString();
                string result = funcDelegate(10,20);
                Console.WriteLine("sum="+result);
    
            }
        }

    Finally, I completely learning the  C# language, go to bed, good night guy.

  • 相关阅读:
    编程及应用中的一些快捷键(持续更新中)
    html5入门(head部分的基本认识)
    html5入门(j简单了解html)
    动态规划 ship
    js 解决两值交换
    styled-components解决全局样式'injectGlobal' 废除的问题
    mysql sql更新密码失败
    window nginx 基础命令
    MySQL 8.0
    "unexpected console statement” in Node.js
  • 原文地址:https://www.cnblogs.com/gester/p/4870318.html
Copyright © 2011-2022 走看看