Tuple on C# 4.0
何となく What's New in the .NET Framework 4 とかを眺めていて、 .NET Framework 4 に導入された Tuple についてチェックしてみました。( Google で検索しても扱っている記事があまり見当たらなかったので、備忘録として)
とは言っても、まだ VS2010 も .NET Framework 4 もどこにも入れていないので、ドキュメント読んだだけの想像で書いてます。
ソース例とか間違ってたらゴメンナサイ><
- Tuple (factory class)
- Tuple(T1)
- Tuple(T1, T2)
- Tuple(T1, T2, T3)
- Tuple(T1, T2, T3, T4)
- Tuple(T1, T2, T3, T4, T5)
- Tuple(T1, T2, T3, T4, T5, T6)
- Tuple(T1, T2, T3, T4, T5, T6, T7)
- Tuple(T1, T2, T3, T4, T5, T6, T7, TRest)
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 で上記コードが動作することを確認しました。