C# 使单个对象可枚举的最便宜方法?

C# 使单个对象可枚举的最便宜方法?,c#,casting,ienumerable,C#,Casting,Ienumerable,我有一个接口函数,它返回一个IEnumerable集合 我的一些类只使用了MyObject的一个硬编码实例,但仍然需要实现接口 目前我正在创建一个系统。数组如下: public class SomeClass : IMyInterface { private MyObject _myObject; public IEnumerable<MyObject> IMyInterface.GetMyObjects() { return new MyO

我有一个接口函数,它返回一个
IEnumerable
集合

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

目前我正在创建一个系统。数组如下:

public class SomeClass : IMyInterface
{
    private MyObject _myObject;

    public IEnumerable<MyObject> IMyInterface.GetMyObjects()
    {
        return new MyObject[] { _myObject };
    }
}
public类SomeClass:IMyInterface
{
私有对象(MyObject);;
public IEnumerable IMyInterface.getMyObject()
{
返回新的MyObject[]{u MyObject};
}
}
我只是想知道是否有一种更有效的方法,或者有什么魔法来投射对象本身?

你可以

public IEnumerable<MyObject> IMyInterface.GetMyObjects()
{
    yield return _myObject;
}
public IEnumerable IMyInterface.getMyObject()
{
收益率(myObject);;
}

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

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

public IEnumerable<MyObject> IMyInterface.GetMyObjects()
    {
        return new MyObject[1] { _myObject };
    }
public IEnumerable IMyInterface.getMyObject()
{
返回新的MyObject[1]{{u MyObject};
}

。非常感谢。这和OP目前的情况没有什么不同。