このメソッドを考えてみましょう。返される変数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
などです...本体とは異なるものリターンステートメント。