|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。交互扩大(InteractiveExtensions,缩写为Ix)是一组附加的LINQtoObjects查询操纵符,它创建在ReactiveExtensions(Rx)所完成事情的基本之上。疾速扫瞄交互扩大的API以后,我们发明,在System.Linq定名空间下有一组IEnumerable的扩大办法。只管年夜多半开辟职员已在他们本人的工具库中编写了很多此类扩大办法,可是具有一份尺度完成仍是会填补此处空缺
- 起首是ForEach扩大办法,几近每一个开辟职员都曾或多或少编写过此办法。此办法有两个变体,个中第二个变体包含一个从零入手下手的索引。
- Buffer扩大办法将依据给定巨细把一个列举(enumeration)切分红多少个更小的列举。此办法利用一种事后加载和延缓加载相夹杂的加载体例。它会事后读取每一个具有N个元素的缓冲区,可是在前一缓冲区中的元素被完整利用之前,都不会从源对象读取更多的元素。
- Catch扩大办法是个相称风趣的功效。在程序实行终了大概是抛出非常之前,程序都将从一个源对象读取数据。关于后一种情形(程序抛出非常),程序将接着入手下手从第二源对象读取数据。第二源对象多是IEnumerable实例大概是前往值为IEnumerable实例的函数。当利用后一种逻辑时,我们能够限定到某个特定范例的非常。
- Defer扩大办法会承受一个函数,而不是IEnumerable实例作为参数。当且仅当某些情形试图列举时,该函数才会实行。
- DistinctUntilChanged扩大办法会过滤失落一连的反复值。比方,[AABAAB]序列将成为[ABAB]。
- Do扩大办法是ForEach的一种变体,Do办法的功效仅仅是当元素被列举时针对每一个元素实行其action托付办法。
- DoWhile扩大办法除predicate托付办法不思索被列举项以外,和TakeWhile办法十分相似。
- For扩大办法处置一个风趣的成绩。假定你有一份作者列表,和一个能前往图书列表的婚配搜刮函数。For办法将针对列表中的每位作者实行此搜刮函数,并前往一份串连起来的图书列表。
- Generate扩大办法会前往一个列表,此办法将仿照C作风的for轮回。此办法所需的参数包含,前提函数,用于改动形态的迭代函数,和了局选择器。你能够将这类体例复杂了解为用与IEnumerable一样的体例来体现形态机。
- If扩大办法利用一个断言(predicate)函数来断定前往两个列表中的一个。假如只供应了一个列表,那末关于此种毛病情形将会前往一个空序列。
- Memoize扩大办法能够用于制止对源对象屡次列举。在某些方面,Memoize办法就和ToList办法相似,可是ToList对源对象最少能够列举一次,而Memoize对源对象最多只能列举一次。假如你告知Memoize有几预期读取程序,那末跟着某些项被一切预期读取程序利用今后,此办法能够从外部缓冲区中移除这些项。
- Min和Max这两个扩大办法的事情体例正如办法名所传播鼓吹的一样。MinBy和MaxBy这两个扩大办法增添了关于供应单值函数的选项,以便你能够表达“选择发卖额最多的客户”等诸云云类的设法。
- OnErrorResumeNext扩大办法可以串接两个或更多序列以取得分外的优点,即当任一序列发生毛病时将不会制止持续串连残剩的序列。
- Repeat扩大办法会创立一个无限的大概无穷的列表,此办法一遍又一各处复杂反复不异的值。这个值能够是标量或是列表。
- Retry扩大办法将试图列举某个源对象,直到列举乐成大概抛出指定命量的非常。
- Return扩大办法将把一个标量值转换为一个仅包括该值的列表,再也无需显式创立长度为1的数组了。
- Scan扩大办法关于聚合多个字段很有效。分歧于一样平常的聚合函数,Scan办法能够复合挪用,此体例年夜年夜削减了经由过程源对象的传送次数。比方,source.Scan(a=>Dollars+=a.Dollars).Scan(a=>Units+=a.Units)。
- SkipLast和TakeLast这两个扩大办法是Take和Skip两个办法的镜像。
- Throw扩大办法关于测试很有效,它会创立一个IEnumerable实例,当或人试图列举该实例时,它就会抛出非常。
想要懂得更多有关交互扩大(Ix)的信息,你能够寓目BartDeSmet的演示或下载实行版本。
检察英文原文:InteractiveExtensionsforLINQtoObjects
归根到底,net网页编程跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢! |
|