How do I make a class iterable?

后端 未结 2 1022
傲寒
傲寒 2020-12-15 18:30

This is my class

public class csWordSimilarity
{
    public int irColumn1 = 0;
    public int irColumn2 = 0;
    public int irColumn3 = 0;
    public int ir         


        
相关标签:
2条回答
  • 2020-12-15 18:47

    Implement IEnumerable. See Using Iterators (C# Programming Guide)

    In your case you could just use the built-in iterator of a List like so:

    using System;
    using System.Collections.Generic;
    
    class csWordSimilarity : IEnumerable<int> {
        public int irColumn1 = 0;
        public int irColumn2 = 0;
        public int irColumn3 = 0;
        public int irColumn4 = 0;
        public int irColumn5 = 0;
    
        public IEnumerator<int> GetEnumerator() {
            return (new List<int>() { 
                irColumn1, irColumn2, irColumn3, irColumn4, irColumn5 
            }).GetEnumerator();
        }
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
            return GetEnumerator();
        }
    }
    
    0 讨论(0)
  • 2020-12-15 18:59

    You can implement IEnumerable and have the GetEnumerator override return an "iterator" over the variables using the yield statement

    class csWordSimilarity : IEnumerable<int>
    {
        private int _var1 = 1;
        private int _var2 = 1;
        private int _var3 = 1;
        private int _var4 = 1;
    
        public IEnumerator<int> GetEnumerator()
        {
            yield return _var1;
            yield return _var2;
            yield return _var3;
            yield return _var4;
        }
    
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }
    
    0 讨论(0)
提交回复
热议问题