6

さまざまなアプリケーションで広く使用されるライブラリを作成しています。パブリック ライブラリまたは SDK のようなものと言えます。

現在、ポイントのリストを取得してこれらのポイントで計算を実行し、更新されたポイントのリストを返す関数に取り組んでいます。したがって、ここでの私の質問は、戻り値の型として、およびパラメーターで何を使用する必要があるかです。IListIEnumerableまたはCollection

これが関数です。ユーザーが出力で何をするかわかりません。ユーザーがそれをどのように使用するかは、彼次第です。したがって、ここで使用する最適なオプションは何ですか。

public static IEnumerable<Point2D> PeformSomeCalculation(IEnumerable<Point2D> points)
{
    // Do something,
    return updatedPoints;
}
4

4 に答える 4

1

ポイント コレクションを操作しますか?

その場合は、これらの公開メソッドとしてICollectionまたは を使用します。IListAddClearRemove

リストにインデックスを付ける必要がある場合は、選択する必要がありますIList-このインターフェイスはから継承するためICollectionIEnumerableこれが目的になる場合があります。

コレクションを変更またはインデックス化する必要がない場合は、 を使用しますIEnumerable

于 2013-09-12T07:51:21.783 に答える
0

一般に、このコレクションが読み取り専用であるなどのルールを適用しようとしている場合を除き、ユーザーが行うことを想定しないようにします。そのため、最も一般的なタイプを使用します。また、リストを受け入れて更新されたリストを返すため、 iteratorの実装を検討することもできます。

yield returnステートメントを使用すると、クライアントが ForEach 機能を使用できるようになると便利な場合があります。実装が簡単。

于 2013-09-12T08:09:47.033 に答える
0

パラメータとして、最も具体的な必要なタイプを使用する必要があります。IEnumarable の関数のみの機能が必要な場合は、ICollection や IList ではなく、IEnumarable を使用する必要があります。

また、戻り値の型として最も一般的な型を使用する必要がありますが、ICollection と IList の型に注意する必要があります。これを Linq to SQL で使用する場合 - この関数にはメソッドが含まれていますが、Linq はこの型のこの関数を SQL に変換できません。

于 2013-09-12T07:56:07.630 に答える