技术交流,DH讲解.
哈哈,Java和C#里面的For In用起来真爽,我们Delphin也不用眼红了,从D2005起,Delphi里面也有这个功能了.
首先我们要知道哪些类型可以用For In吧,下面就是:
- for Element in ArrayExpr do Stmt; 数组
- for Element in StringExpr do Stmt; 字符串
- for Element in SetExpr do Stmt; 集合
- for Element in CollectionExpr do Stmt; 集合
- for Element in Record do Stmt; 结构体
是不是很爽呀?哈哈,Delphi也与时俱进呀.
之前写了类助手文章中,老赵问是不是扩展方法,因为对C#没有了解到这么多,所以不知道.
那么我们在Java中要For In必须实现Iterator吧.
那么Delphi的会不会也要呢?
是的,如果我们要自己的类支持For In的话,就必须满足下面的条件:
1 必须有个公共方法GetEnumerator(), 这个方法返回值是一 个类,接口或者记录体.
2 上面返回的类,接口或者记录体中又必须有公共方法MoveNext() ,这个方法 的返回值是Boolean.
3 1中返回的类,接口或者记录体中必须有一个只读的属性Current ,类型要 和集合中的元素一样.
说了这么多,看个例子:
居然发现TMyIntArray可以用Create方法来创建数组,这个下去去研究下,