C#自己写的迭代器(拓展字典)

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IEnumerableIEnumerator3
{
    struct MyKeyValue<TKey,TValue1,TValue2,TValue3>
    {
        public TKey key;
        public TValue1 value1;
        public TValue2 value2;
        public TValue3 value3;
        public MyKeyValue(TKey key, TValue1 value1, TValue2 value2, TValue3 value3)
        {
            this.key = key;
            this.value1 = value1;
            this.value2 = value2;
            this.value3 = value3;
        }
    }
    class MyIEnumerable<TKey, TValue1, TValue2, TValue3> : IEnumerable<MyKeyValue<TKey, TValue1,TValue2,TValue3>>
    {
        private List<MyKeyValue<TKey, TValue1, TValue2, TValue3>> list;
        public MyIEnumerable()
        {
            list = new List<MyKeyValue<TKey, TValue1, TValue2, TValue3>>();
        }
        public void Add(TKey key, TValue1 value1, TValue2 value2, TValue3 value3)
        {
            MyKeyValue<TKey, TValue1, TValue2, TValue3> pair = new MyKeyValue<TKey, TValue1, TValue2, TValue3>(key, value1, value2, value3);
            list.Add(pair);
        }
        public IEnumerator<MyKeyValue<TKey, TValue1, TValue2, TValue3>> GetEnumerator()
        {
            for (int index = 0; index < list.Count; index++)
            {
                yield return list[index];
            }
            Console.WriteLine("泛型迭代完毕");
            //结束迭代
            yield break;
        }

IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            MyIEnumerable<string, int, int, int> dayDic = new MyIEnumerable<string, int, int, int>();
            dayDic.Add("Mon",1,1,1);
            dayDic.Add("Tue",2,2,2);
            dayDic.Add("Wed",3,3,3);
            dayDic.Add("4Thu",4,4,4);
            dayDic.Add("Fri",5,5,5);
            dayDic.Add("Sat",6,6,6);
            dayDic.Add("Sun",7,7,7);

foreach (var day in dayDic)
            {
                Console.Write(day.key + "  ");
                Console.Write(day.value1 + "  ");
                Console.Write(day.value2 + "  ");
                Console.Write(day.value3);
                Console.WriteLine();
            }

Console.ReadKey();
        }
    }
}

时间: 2024-10-07 01:56:00

C#自己写的迭代器(拓展字典)的相关文章

代写程序|java二叉树字典查询(qq 928900200)

This assignment will help you practice and understand better the Binary Tree and Binary Search Tree data structures, their operations and implementations. You are to design a small dictionary using the Binary Search Tree data structure. Each entry ma

python iter,迭代器&amp;dict,字典详解

可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通过内置函数iter()来转变为Iterator. 迭代器为类序列对象提供了一个类序列的接口.python的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象.迭代器用起来很灵巧,你可以迭代不是序列但表现处序列行为的对象,例如字典的键.一个文件的行,等等.迭代器的作用如下: >>>

Python学习之旅—Day07(生成器与迭代器)

前言 本篇博客主要专注于解决函数中的一个重要知识点--生成器与迭代器.不管是面试还是工作,生成器与迭代器在实际工作中的运用可以说是非常多,从我们第一天开始学习for循环来遍历字典,列表等数据类型时,我们就已经和生成器,迭代器打交道了!本篇博客从最基础的基本概念,例如容器,可迭代对象,生成器,迭代器的概念,到for循环是怎么工作的娓娓道来.希望本篇博客能够帮助大家切实掌握生成器与迭代器的使用与底层原理. 一.容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in

python当中的 可迭代对象 迭代器

学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样理解,一个容器类型的数据,比如 列表[ ]  .元组 () 和 字典 { }, 我们可以把这样类型的数据放入for temp in [1,2,3] 当中,temp 被一次一次的赋值成为后面容器内数据,然后我们拿到temp进行一些想做的事情.那么for 循环中自动的帮我们把数据一次一次的取出来,可以理

ios开发runtime学习五:KVC以及KVO,利用runtime实现字典转模型

一:KVC和KVO的学习 #import "StatusItem.h" /* 1:总结:KVC赋值:1:setValuesForKeysWithDictionary实现原理:遍历字典,得到所有的key,value值,再利用kvc, setVaue forkey来为value赋值 2: [item setValue:@"来自即刻笔记" forKey:@"source"],内部的底层实现, 1.首先去模型中查找有没有setSource,找到,直接调用

4)装饰器、迭代器、生成器以及内置函数

 装饰器.迭代器.生成器以及内置函数 装饰器: 原函数前后增加功能,切不改变函数的原本使用方式 import timedef wrapper(f):    def inner():        start = time.time()        f()        end = time.time()        print('执行效率为%s'%(end-start))    return inner @wrapperdef func():    print('this is func')

python函数-迭代器和生成器

一 迭代器 1.1 认识迭代器 什么是迭代 什么是迭代器 迭代器 如何从列表.字典中取值的 index索引 ,key for循环 凡是可以使用for循环取值的都是可迭代的 可迭代协议 :内部含有__iter__方法的都是可迭代的 迭代器协议 :内部含有__iter__方法和__next__方法的都是迭代器 一个生成器 只能取一次生成器在不找它要值的时候始终不执行当他执行的时候,要以执行时候的所有变量值为准 l = [1,2,3] while True: lst = l.__iter__() ##

python之迭代器生成器和内置函数,匿名函数

今天学习了迭代器生成器以及内置函数和匿名函数,说实话有些懵圈,有些难度了. 一.迭代器和生成器 1.如何从列表.字典中取值的: index索引 for循环 凡是可以使用for循环取值的都是可迭代的 (1)可迭代协议:内部含有__iter__方法的都是可迭代的 (2)迭代器协议:内部含有__iter__方法和__next__方法的都是迭代器 什么是可迭代的:内部含有__iter__方法的都是可迭代的 什么是迭代器:迭代器=iter(可迭代的),自带一个__next__方法 可迭代最大的优势:节省内

第四课 函数补充--装饰器、迭代器、生成器、匿名函数、递归函数

1.装饰器(补充) (在原有的函数前后增加功能,且不改变原函数的调用方式) 1.1.简单的装饰器构成: def timer(func): def inner(*args,**kwargs): '''执行函数之前要做的''' re = func(*args,**kwargs) '''执行函数之后要做的''' return re return inner def outer(flag): def timer(func): def inner(*args,**kwargs): if flag: pri