.Net9新特性

隐式索引访问

现在对象初始值设定项表达式中允许隐式“从末尾开始”索引运算符[^]。

我们来看一个例子,首先创建了一个ImplicitIndex类并且包含一个Numbers属性,该属性是一个长度为 5 的整数数组。

现在我们可以在初始化类ImplicitIndex时初始化属性Numbers,并使用“从末尾开始”索引运算符来填充数组值。

p{}p{}ruibvl<av{}f{}ips/ta;ocuuserrbmueclm访msiNaCliamtmucoacraapmhnsyrtlbssi>yiieon>ccrvlItisaem[tr.p]oI=WliniriNdd{ticueetimTx[metbe^LIes=1iinrt]nndsIneeme=i(x{pwmil5ptgiI,leecmimtip[c);tl^i;Ii2tsnc]Iedintet=d;xIe(n4x})d,.eN=x[u(^mn)3be]ewr=si)n3t,[5[]^;4]=2,[^5]=1}

锁对象

本次更新引入新的锁类型System.Threading.Lock,用于实现互斥。在之前的版本中通常通过object类型进行加锁,而现在有了专门的Lock类型用来加锁。

新的Lock类型会使得代码更干净、更安全、更高效。

在新的锁定机制中EnterScope替换了Monitor底层实现。同时它遵循Dispose模式返回ref struct,因此可以与using语句结合使用

p{}ubl<ipp{}s/cruusibmucvlmmlail{}amatcorasecyrsk>yroC>Leiooad_ncdlskoPooEnrclxlikeayn).mtWpL(rlo)iect(ke)L_ilnoec(k"L=ocnke"w);Lock();

生成UUID v7

我们经常在实体中使用Guid作为主键,并且通过Guid.NewGuid()可以很方便的生成一个新的Guid,而此方法生成的Guid是依据UUID第四个版本规范生成的。

当前已经可以通过Guid.CreateVersion7()方法创建UUID第七个版本,这个版本UUID主要功能就是包含了时间戳,数据结构如下:

| 48位时间戳 | 12位随机 | 62位随机 |

这也意味着v7版本的UUID可以按时间排序了,在数据库中使用起来更方便,同时Guid.CreateVersion7()方法还有一个重载方法接收DateTimeOffset类型时间戳,用来通过指定时间创建UUID。

vvvaaarrrggguuuiiiddd___vvv477_==tiGGmuueiidd=..NCGeruweiGadut.ieCdVr(ee)ra;stieoVne7r(s)i;on7(TimeProvider.System.GetLocalNow());

Linq新方法 CountBy 和 AggregateBy

引入了新的方法 CountBy 和 AggregateBy后,可以在不经过GroupBy 分配中间分组的情况下快速完成复杂的聚合操作,同时方法命名也非常直观,可以大大提升工作效率。

p{}p{}uubbllippiv{}f{}f{}cuuca;aoobbr.rr.rcllNeNeliiosnnnnEgaCEaCacciteeeeTrcoTcosduwwwwohnhnssid9us9stnCeSSSSpooSrtonttttvlvltiutuuuu=aeaeunAnsddddr.r.dggteeeesWWeeB=nnnntirsrnNyttttutitita{Endetutmxe{{{{emedeegawnLeLemNNNNtiini{tpLaaaasnntn;limmmm.eegeseeeeGg(i(es(trr$n$te)<====oo"";tSuus;t""""pptsuB)ue}dydte""""({e{;n,,,,xinstttt}>AAAA=esugggg>m.deeee.CexKon====.eutAyn.1111g}tK0201eBe)yy}}}};(},,,{cit=e>{ms.ctC.uoAdugenent)t().)V}alue"});");
p{}p{}uubbllipppiv{}f{}f{}cuuuca;aoobbbr.rr.rclllN...eNeliiiosnnnnEoGTAaCEaCaccciteeeeTlroscoTcosduwwwwdoDEhnhnsssid9uins9sttnAeSSSS=pcuooSrrtgnttttBtmvlvltiigtuuuusyieaeaeunnArsddddt(orr.r.dgggeeeeeusnaWWeeg=nnnndtabirgrnNGatttteurltiritar{tnnyeetotmaee{{{{t=((meueedgBws>g)LpLeeyNNNNr;iii{tELaaaasonnin{;ximmmmtuenegaseeeeupo((egsmt.l$s$teep<====G=d"t";ttlSr>)u;;et""""ads(udgees})der{n{tee"""")oitg;tn,,,,utsr;tpe.o}>GGGG.mAu}rrrrK.gpaaaaeKg.ddddyerKeeee,yee}gy====ga}rt""""oeuBpy""""{(,,,,=ic{>tgAAAAe=rgggggm>oeeeer.uoVcp====ua..plGV1111.ura0201Sealu}du}}}}mee,,,(,}s"t)0u;,")=(;>acsct,u.sAtgue)))=>acc+stu.Age))
Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计