2012-01-26 8 views
2

私はIEnumerable<MyObject>コレクションを返すインターフェイス関数を持っています。単一のオブジェクトを作る最も安価な方法Enumerable?

私のクラスの中には、MyObjectというハードコーディングされたインスタンスが1つしか使用されていませんが、まだインターフェイスを実装する必要があります。

現在、私はちょうどそうのようなの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; 
} 

をかもしれない...しかし、これはそれを動作させるために、コンパイラは全体のステートマシンクラスを生成する原因となりますことを検討してください。もしそれがあなたのために安く聞こえたら、OK。それ以外の場合は、アレイの解決策は正常に見えます。インスタンスを再利用する際に問題がなければ、配列を事前に作成することができます。

+1

1:それは移動するための方法です。 –

+0

。感謝万円。 – GazTheDestroyer

0

私は次のことがかなり安価であるべきと考えている:

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

これはOPが現在持っているものと変わりません。 –