国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

淺談Tuple之C#4.0新特性那些事兒你還記得多少?

2019-11-14 14:29:48
字體:
供稿:網(wǎng)友

今天給大家分享的內(nèi)容基于前幾天收到的一條留言信息,留言內(nèi)容是這樣的:

 

 看了這位網(wǎng)友的留言相信有不少剛接觸開發(fā)的童鞋們也會有同樣的困惑,除了用新建類作為橋梁之外還有什么好的辦法?很多童鞋肯定會想到DataSet,不錯,DataSet完全可以實(shí)現(xiàn)各種數(shù)據(jù)集的傳遞,而且還很方便,但是一般我們更推薦使用List集合,那么List集合如何在不確定屬性和類的時候傳遞包含多個字段的集合呢?為一些簡單的結(jié)構(gòu)而新建一個類顯然是不合理的。

一、4.0新特性中的Tuple

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


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

創(chuàng)建一個包含7個元素的Tuple數(shù)組

// 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代表第二個


這樣我們就可以不用為了 一些簡單的結(jié)構(gòu)或?qū)ο蠖バ陆ㄒ粋€類了。
注意的是tuple最多支持8個成員,注意第8個成員很特殊,如果有8個成員,第8個必須是嵌套的tuple類型。

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

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

 

二、實(shí)際場景舉例

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

將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

}

到這里大家是不是明白了,上面那位童鞋的問題原來可以這么解決。

個人建議一些簡單的結(jié)構(gòu)下可以這么使用,過于復(fù)雜的對象結(jié)構(gòu)由于Tuple本身的一些限制(如:最多支持8項(xiàng)內(nèi)容,超過的需要使用TRest)而操作復(fù)雜,我在實(shí)際開發(fā)中使用Tuple最多嵌套過一層Tuple。

大家在平時的工作學(xué)習(xí)中可以多多了解更多常用的基本知識,很多看起來不起眼的小東西將會在開發(fā)過程中起到非常大的作用。

相關(guān)資源獲取或其他疑問可在公眾號留言。如果你有優(yōu)秀的原創(chuàng)技術(shù)類文章也可以投稿分享給大家賺取賞金喲!

微信掃一掃獲取更多開發(fā)資源:

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武平县| 望奎县| 阿拉尔市| 额济纳旗| 肥西县| 广昌县| 和静县| 庆元县| 淮安市| 兴山县| 高安市| 弥勒县| 灵武市| 若尔盖县| 青神县| 民权县| 莱州市| 林甸县| 汾西县| 吴堡县| 丹阳市| 南岸区| 石柱| 新密市| 宜春市| 从江县| 邯郸市| 许昌县| 库尔勒市| 呼玛县| 曲沃县| 房山区| 铁岭市| 宁武县| 徐汇区| 泉州市| 温泉县| 鱼台县| 轮台县| 山东省| 嘉荫县|