成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Dotnet的數據定位和匹配

存儲 存儲軟件
最近項目緊,還要不停出差。所以,寫個短點的、最近經常用到的內容:數據定位和匹配。

[[386494]]

本文轉載自微信公眾號「老王Plus」,作者老王Plus的老王 。轉載本文請聯系老王Plus公眾號。

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

所以,寫個短點的、最近經常用到的內容:數據定位和匹配。

數據定位

假設我們有這樣一個數組:

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

我們取某個位置的值,以前的做法通常是:

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

現在,我們有了一個專門用于定位的結構System.Index。注意,這是一個結構。

所以,取特定位置的數據,可以寫成這樣:

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

或者直接合并成:

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

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

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

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

里的x。

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

  1. Index index = ^1; 

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

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

為了防止不提供原網址的轉載,特在這里加上原文鏈接:https://abc.com

數據范圍

有定位,就會有范圍。

還是上面的例子:

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

通常,我們取一個范圍的數據,會這么取:

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

或者用個循環,我就不寫了。

這兒,又有一個神奇的結構:System.Range。

  1. Range r = new Range(3, 5); 
  2. var xx = array[r]; 

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

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

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

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

省去定義,就變成:

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

這個寫法還可以延伸出:

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

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

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

數據匹配

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

  1. class Employee 
  2.     public int Id { get; set; } 
  3.     public string Name { get; set; } 
  4.     public int Age { get; set; } 

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

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

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

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

現在,我們有了更具有可讀性的寫法。

簡單比較

  1. if(employee.Age is 0) {} 
  2. if(employee.Name is null) {} 
  3. if(employee.Name is not null) {} 

類型檢查并創建實例

  1. if(employee is Employee emp) 
  2.     emp.Age = 5; 

屬性比較

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

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

 

這就是今天的內容了。有沒有Get到爽點?

 

責任編輯:武曉燕 來源: 老王Plus
相關推薦

2021-02-03 08:12:23

函數委托Dotnet

2010-09-10 11:32:23

CSS絕對定位CSS相對定位

2010-09-14 16:39:26

CSS DIV相對定位CSS DIV絕對定位

2011-06-21 09:06:01

2010-12-15 14:04:11

Ngrep

2010-08-16 11:28:02

DIV

2021-03-03 08:13:57

模式垃圾回收

2010-08-26 16:48:48

DIV絕對定位相對定位

2010-09-06 11:17:19

CSS相對定位CSS絕對定位

2021-12-29 07:44:50

Dotnet 代碼系統

2009-09-09 11:37:08

Scala的模式匹配

2022-03-11 09:22:55

令牌Dotnet線程

2010-10-13 13:24:16

MySQL數據目錄

2020-11-01 17:13:22

DotNET 5語言gRPC

2010-09-10 12:40:06

CSS相對定位CSS絕對定位

2022-08-29 15:26:58

MySQLSQL模式

2021-06-02 08:07:59

LinuxService應用

2010-10-13 13:48:10

MySQL數據目錄

2010-08-17 11:10:16

DIV+CSS

2017-02-16 08:41:09

數據Vlookup匹配
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区一区二区三亚瑟 | 亚洲日本中文字幕在线 | 拍拍无遮挡人做人爱视频免费观看 | 91精品久久久久久久久久 | 国产精品久久久久久久久久久久 | 91原创视频 | 在线毛片网| 国产在线精品区 | 7777在线视频免费播放 | 91精品国产91久久久久久密臀 | 伊人成人免费视频 | 国产美女特级嫩嫩嫩bbb片 | 成人在线视频一区 | 99热播精品 | 国产成人自拍一区 | 日本人爽p大片免费看 | 日韩高清中文字幕 | 激情毛片 | 日韩欧美久久 | 国产一区二区精 | 国内精品视频在线观看 | 国产做a爱片久久毛片 | 免费超碰 | 精品一区二区视频 | 日韩综合在线播放 | 三级视频在线观看电影 | 国产一区二区在线免费 | 久久区二区 | 国产性色视频 | 日韩国产三区 | 91热爆在线观看 | 99福利在线观看 | 国产成人在线播放 | 天天摸天天看 | 久久精品欧美一区二区三区不卡 | 国产精品女人久久久 | 日韩在线欧美 | 国产国拍亚洲精品av | 精品国产精品国产偷麻豆 | 色999视频 | 欧美日韩国产在线观看 |