zoukankan      html  css  js  c++  java
  • 【c#】代码中对于=>符号的理解

    先来个简单的例子
    RelayCommand(() => this.AddPerson(), () => this.CanAddPerson());

    可以翻译为 RelayCommand(参数一, 参数二);

    参数一 :() => this.AddPerson()

    参数二 :() => this.CanAddPerson()

     

    () => this.AddPerson() 的意思是 一个没有参数的方法,返回 this.AddPerson(),而这个返回值的类型不用指定,系统会自动判断

    同理 () => this.CanAddPerson() 就是 一个没有参数的方法返回this.CanAddPerson()

     

    例二:

        internal abstract class GeoService
        {
            internal abstract void Update(GeoLocation location);

            internal abstract string Name { get; }
        }

         private List<GeoService> _geoServices = new List<GeoService>();

         private void NotifyLocationChanged(GeoLocation location)
          {
              _geoServices.ForEach(g => g.Update(location));
          }

    _geoServices是一个list,3.5给他扩展了一个foreach方法,这个方法可以遍历一遍这个列表。

    遍历列表干什么呢?

    可以对列表的每个项目做点事情,这时可以用个委托,这样又要定义一个委托,语句太多了

    =>就是lambda运算符,简化这些语法。

    定义一个匿名委托,左边是参数,右边是函数体。

    参数g没有定义类型是因为他自动推断出类型来了,因为这个list能遍历的东西只有这个。
    这个语句里,就是遍历这个list列表,对每个项执行一下update方法。

     

     

    例三:

    new Action<ImageEventArgs>((arg)=>xxx)

    这是new了一个Action类型的委托,Action是没有返回值的委托<ImageEventArgs>这个是委托的参数类型

    (arg)是传入的参数 =>后面是方法体

    this.Dispatcher.BeginInvoke(
          new Action<int, TestDetailClass, int>(
          (idx, item,idd) =>m_TestForm[idx].Updatefun(item, idd)
           ), index, m_detail,id);

    拆解:

    最外层为BeginInvoke(方法的委托,传参1,传参2,传参3)   

               这三个传参提供给委托方法使用

    方法的委托:new Action<委托参数类型>(执行的方法)         

              封装一个方法,该方法定义了三个传参的类型,并且它不返回值

    执行的方法:(idx, item,idd) =>m_TestForm[idx].Updatefun(item, idd)     

              左边是新声明的传入参数(对应的数据类型是int, TestDetailClass, int),他们的值来自于传入的三个参数:index,m_detail,id

              右边m_TestForm[idx].Updatefun是一个有传参的方法

    其实就是把index,m_detail,id传给m_TestForm[idx].Updatefun方法使用

    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    不安装oracle客户端也可以使用pl/sql developer
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    c语言第一次作业1
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02,
    ASP.NET url重写与图片防盗链 I
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/14183616.html
Copyright © 2011-2022 走看看