日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dotnet的数据定位和匹配

發(fā)布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dotnet的数据定位和匹配 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Dotnet里,數(shù)據(jù)定位和匹配的相關(guān)編程現(xiàn)在變得很舒服。

?

最近項目緊,還要不停出差。

所以,寫個短點的、最近經(jīng)常用到的內(nèi)容:數(shù)據(jù)定位和匹配。

?

數(shù)據(jù)定位

假設(shè)我們有這樣一個數(shù)組:

var?array?=?new?int[]?{?1,?2,?3,?4,?5,?6,?7,?8,?9,?0?};

我們?nèi)∧硞€位置的值,以前的做法通常是:

int?x?=?array[4]; int?y?=?array[array.Length?-?1];

現(xiàn)在,我們有了一個專門用于定位的結(jié)構(gòu)System.Index。注意,這是一個結(jié)構(gòu)。

所以,取特定位置的數(shù)據(jù),可以寫成這樣:

Index?index?=?new?Index(4,?fromEnd:?false); int?x?=?array[index];

或者直接合并成:

int?x?=?array[new?Index(4,?false)];

?

看一下Index的第二個參數(shù)fromEnd,很明顯,就是這個計數(shù)是從前往后還是從后往前計數(shù)的一個標(biāo)志。所以,從尾計數(shù),可以寫成:

int?y?=?array[new?Index(1,?true)];

這兒要稍注意一下,從后往前計數(shù),索引值1是最后一個數(shù)據(jù),索引值0指出去了,會報錯。我們可以把這個數(shù)字想象成array.length-x

里的x。

另外,在fromEnd值為true時,即從后往前計數(shù)時,Index提供了一個簡單的寫法:

Index?index?=?^1;

?

額外的知識點:這個Index可以用在很多需要定位的地方。看個例子:

string?s?=?@"Hello?WangPlus"; char?a?=?s[new?Index(4)]; char?b?=?s[^2];

?

????為了防止不提供原網(wǎng)址的轉(zhuǎn)載,特在這里加上原文鏈接:https://abc.com

數(shù)據(jù)范圍

有定位,就會有范圍。

還是上面的例子:

var?array?=?new?int[]?{?1,?2,?3,?4,?5,?6,?7,?8,?9,?0?};

通常,我們?nèi)∫粋€范圍的數(shù)據(jù),會這么取:

var?x?=?array.Skip(3).Take(2);

或者用個循環(huán),我就不寫了。

?

這兒,又有一個神奇的結(jié)構(gòu):System.Range。

Range?r?=?new?Range(3,?5); var?xx?=?array[r];

結(jié)果跟上面array.Skip(3).Take(2)是一樣的。

這里,Range(Index start, Index end)里,兩個參數(shù)就是上一節(jié)的Index。另外,開始索引是包含的,結(jié)束索引是不包含的。這兒需要注意一下。

?

這里又有一個簡單的寫法。Range(3,5)可以簡單寫為3..5。所以,代碼可以簡化為:

Range?r?=?3..5; var?xx?=?array[r];

省去定義,就變成:

var?xx?=?array[3..5];

這個寫法還可以延伸出:

var?xx?=?array[3..];????????//從第3個數(shù)據(jù)到最后 var?xx?=?array[..5];????????//從頭到第4個數(shù)據(jù)(注意后面是不包含) var?xx?=?array[..];????????????//全部 var?xx?=?array[0..^0];????//全部

?

同Index一樣,這個Range也可以用在各種需要范圍的地方,例如:

string?s?=?@"Hello?WangPlus"; string?a?=?s[3..5];

數(shù)據(jù)匹配

還是拿例子來說。假設(shè)我們有下面的一個類定義:

class?Employee {public?int?Id?{?get;?set;?}public?string?Name?{?get;?set;?}public?int?Age?{?get;?set;?} }

使用中,我們生成了一個實例:

var?employee?=?new?Employee()?{?Id?=?1,?Name?=?"John?Doe",?Age?=?0?};

然后,我們邏輯中需要一些條件判斷,通常,我們可能這么寫:

if(employee.Age?==?0)?{} if(employee.Name?!=?null)?{}

?

現(xiàn)在,我們有了更具有可讀性的寫法。

簡單比較

if(employee.Age?is?0)?{} if(employee.Name?is?null)?{} if(employee.Name?is?not?null)?{}

類型檢查并創(chuàng)建實例

if(employee?is?Employee?emp) {emp.Age?=?5; }

屬性比較

if?(employee?is?{?Age:?3?})?{} if?(employee?is?{?Age:?30,?Name:?"aaa"?})?{} if?(employee?is?{?Age:?>?25?})?{}

自己感覺,屬性比較是寫著最痛快的,終于不用一長串的&&了。

?

這就是今天的內(nèi)容了。有沒有Get到爽點?

喜歡就來個三連,讓更多人因你而受益

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Dotnet的数据定位和匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。