疊代子封裝了一份物件清單以及一個維護清單中之現行位置的游標。C 或 C++ 應用程式會使用疊代子依序擷取清單中的每一個物件。
當建立疊代子時, 游標會位在第一個物件前面。應用程式會使用疊代子依序擷取每一個物件。為了擷取物件, 應用程式會使用 Iterator 類別中的下列三種方法:
Iterator 類別等同於 Java 中的 Enumerator 類別。XMS .NET 和 Java 類似,都是使用 IEnumerator 介面。
/********************************************************/ /* 使用疊代子來瀏覽內容的 XMS 範例 */ /********************************************************/ rc = xmsMsgGetProperties(hMsg, &it, xmsError); if (rc == XMS_OK) { rc = xmsIteratorHasNext(it, &more, xmsError); while (more) { rc = xmsIteratorGetNextProperty(it, (xmsHObj)&p, xmsError); if (rc == XMS_OK) { xmsPropertyGetName(p, name, 100, &len, xmsError); printf("Property name=\"%s\"\n", name); xmsPropertyGetTypeId(p, &type, xmsError); switch (type) { case XMS_PROPERTY_TYPE_INT: { xmsINT value=0; xmsPropertyGetInt(p, &value, xmsError); printf("Property value=%d\n", value); break; } case XMS_PROPERTY_TYPE_STRING: { xmsINT len=0; char value[100]; xmsPropertyGetString(p, value, 100, &len, xmsError); printf("Property value=\"%s\"\n", value); break; } default: { printf("Unhandled property type (%d)\n", (int)type); } } xmsPropertyDispose(&p, xmsError); } rc = xmsIteratorHasNext(it, &more, xmsError); } printf("Finished iterator....\n"); xmsIteratorDispose(&it, xmsError); } /********************************************************/