- Tuple是一個資料結構,含有序的項目,順序由建立Tuple時決定
- Tuple文件 http://msdn.microsoft.com/en-us/library/system.tuple.aspx
- Tuple中的項目(Item)型別(Type)可以不同
- 固定大小,無法新增、移除項目
- .NET Framework 4始支援
- 從functional programming引進而來
- Tuple中的項目(Item)都是唯讀的(Readonly)
- 缺點,程式不易讀,Tuple中的項目會自動命為Item1、Item2….無法知道到底存什麼
- 用於
- 表示一組資料,如資料庫記錄
- 從method回傳多個值,不需使用out參數
- 使用一個參數傳遞多個值到method
Demo1
可以使用建構函式來建立,語法煩瑣,可以使用Tuple.Create方法建立,利用ItemX取出值。
var n = new Tuple<int , int >( 10 , 20 );
//會自動根據定義產生Item1、Item2屬性
Console.WriteLine( n.Item1 );
Console.WriteLine( n.Item2 );
//較簡單
var n2 = Tuple.Create<int , int>( 10 , 20 );
Console.WriteLine( n2.Item1 );
Console.WriteLine( n2.Item2 );
}
Demo2
可以當參數傳入mymethod
//當參數傳入mymethod
var n = new Tuple<int , int>( 10 , 20 );
Console.WriteLine( mymethod(n ) );
}
private static int mymethod(Tuple<int , int > t ) {
return t.Item1 + t.Item2;
}
Demo3
可以當作方法回傳值
private static void demo3( ) {
Console.WriteLine( mymethod2( ).Item1 );
Console.WriteLine( mymethod2( ).Item2);
}
private static Tuple<int , string> mymethod2( ) {
return Tuple.Create<int,string>(1,"mary");
}
Demo4
可以建立1~7個項目 tuple,超過8個以上可以使用Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>物件的來建立,再透過Rest屬性存取TRest中項目的值。定義8個項目:
private static void demo4( ) {
var t8 = new Tuple<int , int , int , int , int , int , int , Tuple<int>>( 1 , 2 , 3 , 4 , 5 , 6 , 7 , Tuple.Create(8) );
Console.WriteLine( t8.Rest.Item1); //8
}
Demo5
定義9個項目:
private static void demo5( ) {
var t9 = new Tuple<int , int , int , int , int , int , int , Tuple<int , int>>( 1 , 2 , 3 , 4 , 5 , 6 , 7 ,
new Tuple<int,int>(8,9)
);
Console.WriteLine( t9.Rest.Item1); //8
Console.WriteLine( t9.Rest.Item2 ); //9
}
沒有留言:
張貼留言