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

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

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

public class SomeClass : IMyInterface
{
    private MyObject _myObject;

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


我只是想知道是否有更有效的方法,或者是否有任何魔法来投射物体本身?

最佳答案

你可能只是...

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


...但是请考虑到这将导致编译器生成一个完整的状态机类以使其正常工作。如果这对您来说便宜,那么可以。否则,阵列解决方案看起来不错。如果重用其实例没有问题,则可能需要预创建数组。

10-08 19:24