このブログを検索

ラベル

C# (6) Objective-C (2) Qt (2) .NET (1) Visual Studio (1)

2011年5月11日水曜日

【C#】refやoutは共変でも反変でもない

More Effective C#を読んでいて気になったことがあったのでメモ。
それは「refやoutは共変でも反変でもない」です。言葉より、ソースを示します。

上記の例ではref Parent型の仮引数に対してParentのサブクラスのSub型を実引数として渡そうとして、エラーになっています。つまり、共変ではないという事です

ならばrefやoutを使わないで実装しようと思っても、「メソッドの戻り値として複数の値を得たい」場合はrefやoutを使いたくなります。

そこで本書では、戻り値をタプルにすれば良いと言っています。タプルとは順序付きのデータ集合のことで、一連のデータをグループ化するために使用できます(と、プログラミングF#には書いてありました)。

戻す値が3つ以上なら、単純にT3、T4、…と別途定義をします。

0 件のコメント:

コメントを投稿