読者です 読者をやめる 読者になる 読者になる

雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

Tuple on C# 4.0

.NET C#

何となく What's New in the .NET Framework 4 とかを眺めていて、 .NET Framework 4 に導入された Tuple についてチェックしてみました。( Google で検索しても扱っている記事があまり見当たらなかったので、備忘録として)
とは言っても、まだ VS2010 も .NET Framework 4 もどこにも入れていないので、ドキュメント読んだだけの想像で書いてます。
ソース例とか間違ってたらゴメンナサイ><

var tuple1 = Tuple.Create(1, "hoge", true, DateTime.Now);

var i = tuple1.Item1 + 4;           // Item1 : Int32
MessageBox.Show(tuple1.Item2);      // Item2 : String
if (tuple1.Item3) {                 // Item3 : Boolean
  // some code...
}
var date = tuple1.Item4.AddDays(1); // Item4 : DateTime

ちなみに、 Tuple の要素数が 8 以上になったら、上のリストの最後のやつを使ってチェーンでつなぐ感じなんですかね。

var tuple2 = Tuple.Create(value1, value2, value3, value4, value5, value6, value7,
                 Tuple.Create(value8, value9, value10, value11, value12, value13, value14));

var foo = tuple2.Item2;      // value2
var bar = tuple2.Rest.Item3; // value10

……まぁ、こればかりは仕方ないのかな。
どうせなら、インデクサでアクセス出来る可変長なのがあればいいのに。。。

( 2009/05/21 追記) VS2010 で上記コードが動作することを確認しました。