我有一个返回IEnumerable<MyObject>
集合的接口函数。
我的一些类只使用一个MyObject
的硬编码实例,但仍需要实现该接口。
目前我只是像这样创建一个System.Array:
public class SomeClass : IMyInterface
{
private MyObject _myObject;
public IEnumerable<MyObject> IMyInterface.GetMyObjects()
{
return new MyObject[] { _myObject };
}
}
我只是想知道是否有一种更有效的方式,或者是否有任何魔法来施放物体本身?
答案 0 :(得分:3)
你可能只是......
public IEnumerable<MyObject> IMyInterface.GetMyObjects()
{
yield return _myObject;
}
...但请注意,这将导致编译器生成一个完整的状态机类以使其工作。如果这对你来说听起来很便宜,那好吧。否则,阵列解决方案看起来很好。如果在重用其实例时没有问题,您可能需要预先创建数组。
答案 1 :(得分:0)
我认为以下应该相当便宜:
public IEnumerable<MyObject> IMyInterface.GetMyObjects()
{
return new MyObject[1] { _myObject };
}