More Effective C#を読んでいて気になったことがあったのでメモ。
それは「refやoutは共変でも反変でもない」です。言葉より、ソースを示します。
上記の例ではref Parent型の仮引数に対してParentのサブクラスのSub型を実引数として渡そうとして、エラーになっています。つまり、共変ではないという事です
ならばrefやoutを使わないで実装しようと思っても、「メソッドの戻り値として複数の値を得たい」場合はrefやoutを使いたくなります。
そこで本書では、戻り値をタプルにすれば良いと言っています。タプルとは順序付きのデータ集合のことで、一連のデータをグループ化するために使用できます(と、プログラミングF#には書いてありました)。
戻す値が3つ以上なら、単純にT3、T4、…と別途定義をします。
0 件のコメント:
コメントを投稿