c# – 是否可以拥有IEnumerable属性?

我有一个类IEnumerable< T>我希望有不同的属性,提供过滤的IEnumerable< T>访问.

例如:

class Shape
   ShapeType = Box/Sphere/Pyramid

class ShapeCollection : IEnumerable<Shape>
{
   public IEnumerable<Shape> OnlyBox
   {
       foreach(var s in this)
       {
           if (s.ShapeType == Box)
               yield return s;
       }
   }
}

这是怎么回事?只是不确定,完全是这样.

谢谢.

当然,但你可能想把它重写为

public IEnumerable<Shape> OnlyBox
{
    get { return this.Where(x => x.ShapeType == ShapeType.Box); }
}

这完全相同的事情.

翻译自:https://stackoverflow.com/questions/3630239/is-it-possible-to-have-a-property-that-is-ienumerablet

转载注明原文:c# – 是否可以拥有IEnumerable属性?