如何使类可迭代

本文关键字:迭代 何使类 | 更新日期: 2023-09-27 18:25:47

这是我的类

public class csWordSimilarity
{
    public int irColumn1 = 0;
    public int irColumn2 = 0;
    public int irColumn3 = 0;
    public int irColumn4 = 0;
    public int irColumn5 = 0;
}

我想让这个类可以像下面那样迭代使用

foreach (int irVal in myVarWordSimilarity)
{
} 

CCD_ 1为CCD_。所以我想迭代所有的公共int变量。我需要如何修改csWordSimilarity类,使其像上面那样可迭代。

如何使类可迭代

您可以实现IEnumerable,并让GetEnumerator重写使用yield语句在变量上返回一个"迭代器"

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();
    }
}

实现IEnumerable。请参阅使用迭代程序(C#编程指南)

在您的情况下,您可以使用List的内置迭代器,如下所示:

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();
    }
}