« [.NET] UNICODE のファイルを Shift_JIS として読み込んだら、 当然文字化け …しないこともある (@@; | トップページ | [NEWS] TFS に Eclipse から接続するツールを、 Microsoft が買収。 MS ブランドの製品として開発へ。 »

2009年11月10日 (火)

[.NET] Tuple は、 配列じゃないのよ~

…だから、 Tuple ( 組 ) に要素が 10個も 20個もあったら、 ワケワカメになるだけだろうに。

Microsoft Connect FeedbackID=508979 のコメント
投稿者: biac、投稿日時: 2009/11/08 19:35

Tuple (組) は、 配列やリストではありません。 むしろ、 匿名の構造体とでもいうべきものです。
構造体のメンバーが多すぎると混乱を招くことがあるように、 Tuple (組) の要素も多すぎるのは好ましくありません。

Tuple (組) のサンプルに、 いかにも配列のような例が多いので、 誤解を招いているのかもしれません。 しかし、 配列とはまったく異なるものであることは、 インデクサや IEnumerable が実装されていないことからも分かります。
仮に、 20-tuple を作ったとしましょう。 しかし、 その要素にアクセスするのに foo[19] といった構文は使えません。 foo.Item19 とか foo.Item17 とか、 ハードコーディングする必要があります。 配列代わりに使おうとすると、ループで処理できないので、 不便なだけです。 Tuple (組) の趣旨に沿って異なるものを格納しているとすると、 Item17 は何だったのか、 Item19 は何だったのか、 記憶していられる人はどれだけ居るでしょう?

たしかに、 8個という上限は恣意的に決められたものです。 でも、 人間が一度に記憶できるのは 7個程度だと言われていることからすると、 妥当な設計でしょう。
参考までに。 8個に決定した経緯が、 MSDN マガジン 2009年 7月号に書かれています。
http://msdn.microsoft.com/ja-jp/magazine/dd942829.aspx


# 個人的には 3つまででいいじゃんと思ってみたり。 「ひとつ、 ふたつ、 みっつ、 …たくさん!」f(^^;

PS.
それと、 Tuple (組) を返すメソッドやプロパティは、 ぜひとも private か internal で。 まちがっても public にはしないようにお願いしますね~。
まぁ、 Tuple<int, int> CalcNewPosition(int nowX, int nowY) ってな感じで、 シグネチャから Tuple の中身が見当付く場合は public で使ってもかまわんと思うけど。

|

« [.NET] UNICODE のファイルを Shift_JIS として読み込んだら、 当然文字化け …しないこともある (@@; | トップページ | [NEWS] TFS に Eclipse から接続するツールを、 Microsoft が買収。 MS ブランドの製品として開発へ。 »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/209349/46723676

この記事へのトラックバック一覧です: [.NET] Tuple は、 配列じゃないのよ~:

« [.NET] UNICODE のファイルを Shift_JIS として読み込んだら、 当然文字化け …しないこともある (@@; | トップページ | [NEWS] TFS に Eclipse から接続するツールを、 Microsoft が買収。 MS ブランドの製品として開発へ。 »