2012-01-26 93 views
2

我有一個返回值IEnumerable<MyObject>收集的接口功能。生成單個對象的最便宜的方法Enumerable?

我的一些類只能使用一個硬編碼實例的MyObject,但仍需要實現的接口。

目前我只是創造一個System.Array的,像這樣:

public class SomeClass : IMyInterface 
{ 
    private MyObject _myObject; 

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

,如果有一個更有效的方式,或任何魔法施放對象本身我只是想知道?

回答

3

你可能只是......

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

...但認爲這將導致編譯器生成一個整體的狀態機類爲它工作。如果那聽起來對你來說很便宜,那好吧。否則,陣列解決方案看起來很好。如果重用實例沒有問題,您可能需要預先創建該數組。

+1

+1:這是要走的路。 –

+0

。太感謝了。 – GazTheDestroyer

0

我相信下面應該是相當便宜:

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

這與OP目前的情況沒有什麼不同。 –