淺談Tuple之C#4.0新特性


一、4.0新特性中的Tuple

大家可以回顧一下c#4.0中增加的一個新特性,元組Tuple,它是一種固定成員的泛型集合:


下面先看看官方的一個使用例子:

創建一個包含7個元素的Tuple數組

// Create a 7-tuple.

var population = new Tuple<string, int, int, int, int, int, int>( "New York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278);// Display the first and last elements.

Console.WriteLine("Population of {0} in 2000: {1:N0}",population.Item1, population.Item7);

用法非常簡單方便,普通的方式我們可能需要這樣:

public class A{ 

 public int ID{get;set;} 

 public string Name{get;set;}

}

A a=new A(){ID=1001,Name='CodeL'};

Console.WriteLine(a.Name);


而使用Tuple我們只需要這樣:

Tuple<int,string> a=new Tuple<int,string>(1001,'CodeL');

Console.WriteLine(a.Item2);//Item1 代表第一個,Item2代表第二個


這樣我們就可以不用為了 一些簡單的結構或對象而去新建一個類了。
注意的是tuple最多支持8個成員,注意第8個成員很特殊,如果有8個成員,第8個必須是嵌套的tuple類型。

列如:Tuple<string, int, int, int, int, int, int, Tuple<int, int, int>>  紅色部分是第8個。

第8個元素使用方法:對象.Rest.Item1,對象.Rest.Item2

 

二、實際場景舉例

我們使用Tuple來完成一次簡單數據集的傳遞工作。

將Tuple作為返回值

public List<Tuple<int,string,DateTime>> GetUsers(){ 

  string sql="select ID,Name,CreateTime from Tbl_Users";

using (SqlDataReader r = SqlHelper.ExecuteReader(Connections.AdminDBConString, CommandType.Text, sql))   

 {             

        List<Tuple<int,string,DateTime>> list = new List<Tuple<int,string,DateTime>>(); 

              while (r.Read()) 

              { 

                  Tuple<int,string,DateTime> t = new Tuple<int,string,DateTime>(Convert.ToInt32(r[0]),r[1].ToString(),Convert.ToDatetime(r[2])); 

                  list.Add(t);

                } 

              return list; 

          }

}

使用也非常方便:

List<Tuple<int,string,datetime>> list=GetUsers();

foreach(Tuple<int,string,datetime> t in list)

 Console.write(t.Item1);//ID 

 Console.write(t.Item2);//Name

   Console.write(t.Item3);//CreateTime

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM