Foreach C# Là Gì



We can also use macros for making code easier to lớn read và write. For example we can implement macros for implementing the foreach construct in C for some data structures lượt thích singly- and doubly-linked lists, queues, etc.

Bạn đang xem: Foreach c# là gì

Here is a small example.

#include #include struct LinkedListNode int data; struct LinkedListNode *next;;#define FOREACH_LIST(node, list) for (node=list; node; node=node->next)/* Usage */int main(void) struct LinkedListNode *danh mục, **pcác mục = &các mục, *node; int i; for (i=0; idata = i; (*plist)->next = NULL; pdanh mục = &(*plist)->next; /* printing the elements here */ FOREACH_LIST(node, list) printf("%d ", node->data); }You can make a standard interface for such data-structures và write a generic implementation of FOREACH as:

#include #include typedef struct CollectionItem_ int data; struct CollectionItem_ *next; CollectionItem;typedef struct Collection_ /* interface functions */ void* (*first)(void *coll); void* (*last) (void *coll); void* (*next) (void *coll, CollectionItem *currItem); CollectionItem *collectionHead; /* Other fields */ Collection;/* must implement */void *first(void *coll) return ((Collection*)coll)->collectionHead;/* must implement */void *last(void *coll) return NULL;/* must implement */void *next(void *coll, CollectionItem *curr) return curr->next;CollectionItem *new_CollectionItem(int data) CollectionItem *nhà cửa = malloc(sizeof(CollectionItem)); item->data = data; item->next = NULL; return item;void Add_Collection(Collection *coll, int data) CollectionItem **thắng lợi = &coll->collectionHead; while(*item) sản phẩm = &(*item)->next; (*item) = new_CollectionItem(data);Collection *new_Collection() Collection *nc = malloc(sizeof(Collection)); nc->first = first; nc->last = last; nc->next = next; return nc;/* generic implementation */#define FOREACH(node, collection) for (node = (collection)->first(collection); node != (collection)->last(collection); node = (collection)->next(collection, node))int main(void) Collection *coll = new_Collection(); CollectionItem *node; int i; for(i=0; idata); }To use this generic implementation just implement these functions for your data structure.

Xem thêm: Top 22 Game Trên Điện Thoại Hay Nhất, Top 15 Game Mobile Hay Nhất Trên Điện Thoại


Xem thêm: Hội Yêu Thích Mộng Giang Hồ Trung Quốc, Mộng Giang Hồ Trung Quốc

void* (*first)(void *coll);2. void* (*last) (void *coll);3. void* (*next) (void *coll, CollectionItem *currItem);

PDF - Download C Language for không lấy phí
This modified text is an extract of the original Stachồng Overflow Documentation created by following contributors & released under CC BY-SA 3.0