このメソッドを考えてみましょう。返される変数myVarは ですがList<T>、メソッドの戻り値の型はMyMethod()ですIEnumerable<T>。
public IEnumerable<T> MyMethod(string stuff)
{
var myVar = new List<T>();
//do stuff
return myVar;
}
基本的に、私が知りたいのはmyVar、別の型として返してよいかということです。
具体的には、私の状況に関しては、「do stuff」は a を通過し、その中のアイテムをオブジェクトのリストにDataRow割り当てます。DataRow他の場所でも同様の状況がICollectionあり、IList戻り値の型があります。
IEnumerableどちらかまたはどちらかを返したい理由ICollectionは、必要以上に返さないようにするためです。しかし同時に、これにより呼び出し元は、List必要に応じて戻り値を に変換できます。
Listただし、メソッドの戻り値の型ではなく、 return ステートメントが を返すのは奇妙に思えます。これは通常の慣行ですか?これを行うと何か問題がありますか?
明確化(だまされたコメントへの対応):
明確にするために、私が興味を持っているのは、本体の return ステートメントが を返しても問題ないかどうかですList<T>が、メソッドヘッダーの戻り値の型はIEnumerable、またはおそらくICollection、Collectionなどです...本体とは異なるものリターンステートメント。