一文看懂 C# 切片語法糖
例子
首先我們看這樣一個例子,有這樣一個數(shù)組
string?[]?lst?=?new?string[]?{?"1",?"2",?"3",?"4",?"5",?"6",?"7"?};我們怎么獲取它的最后一個值, 傳統(tǒng)方法是這樣寫的,
string?str?=?lst[lst.Length-1];那切片語法糖怎么寫呢?
string?str?=?lst[^1];如果這樣寫,那這兩行代碼其實(shí)沒什么區(qū)別,沒有體現(xiàn)出切片語法糖的優(yōu)勢。
那如果我們提取index=1,2,3的數(shù)據(jù)呢, 傳統(tǒng)做法是這樣的
?var?temp?=?new string【】 {?lst[1],?lst[2],?lst[3]?};或者對linq比較熟悉的同學(xué)會這樣寫
????var?temp?=?lst.Skip(1).Take(3).ToArray();在這里我還是講一下skip和take是什么意思
?Skip是跳過第幾個元素之后,開始取得下標(biāo)值的內(nèi)容?Take 是獲取幾個元素的值,
但是如果我們切片操作就太簡單了
var?temp?=?lst[1..3];我們跑一下代碼,咦,怎么只獲取到兩個,我們看一下官方的定義,

End 獲取一個表示范圍的不包含結(jié)束索引的 Index。
這個是什么意思呢,那對高中數(shù)學(xué)集合還比較熟悉的小伙伴應(yīng)該知道,這里的1..3其實(shí)就是我們集合中的1到3左閉右開, 數(shù)學(xué)中是這樣寫的[1,3), 那我們要獲取前三個元素,就應(yīng)該寫成[1,4)(1到4左閉右開),代碼改成
?var?temp?=?lst[1..4];通過這兩個例子大家應(yīng)該學(xué)會了c#中的切片語法糖吧,
如果大家喜歡我的文章,還麻煩給個關(guān)注并點(diǎn)個贊, 希望net生態(tài)圈越來越好!
評論
圖片
表情
