最简单的方法使单个对象可枚举?

时间:2012-01-26 12:11:23

标签: c# casting ienumerable

我有一个返回IEnumerable<MyObject>集合的接口函数。

我的一些类只使用一个MyObject的硬编码实例,但仍需要实现该接口。

目前我只是像这样创建一个System.Array:

public class SomeClass : IMyInterface
{
    private MyObject _myObject;

    public IEnumerable<MyObject> IMyInterface.GetMyObjects()
    {
        return new MyObject[] { _myObject };
    }
}

我只是想知道是否有一种更有效的方式,或者是否有任何魔法来施放物体本身?

2 个答案:

答案 0 :(得分:3)

你可能只是......

public IEnumerable<MyObject> IMyInterface.GetMyObjects()
{
    yield return _myObject;
}

...但请注意,这将导致编译器生成一个完整的状态机类以使其工作。如果这对你来说听起来很便宜,那好吧。否则,阵列解决方案看起来很好。如果在重用其实例时没有问题,您可能需要预先创建数组。

答案 1 :(得分:0)

我认为以下应该相当便宜:

public IEnumerable<MyObject> IMyInterface.GetMyObjects()
    {
        return new MyObject[1] { _myObject };
    }