精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在 C# 8 中使用 模式匹配

開發 后端
模式匹配 是在 C# 7 中引入的一個非常??的特性,你可以在任何類型上使用 模式匹配,甚至是自定義類型,而且在 C# 8 中得到了增強,引入了大量的新模式類型,這篇文章就來討論如何在 C# 8 中使用模式匹配。

[[376473]]

本文轉載自微信公眾號「碼農讀書」,作者碼農讀書 。轉載本文請聯系碼農讀書公眾號。

模式匹配 是在 C# 7 中引入的一個非常??的特性,你可以在任何類型上使用 模式匹配,甚至是自定義類型,而且在 C# 8 中得到了增強,引入了大量的新模式類型,這篇文章就來討論如何在 C# 8 中使用模式匹配。

C# 8 中的表達式模式

在 C# 8 中有三種不同的方式來表達這種模式。

  • 位置模式
  • 屬性模式
  • Tuple模式

接下來看一下這些模式的相關代碼及使用場景。

位置模式

位置模式主要利用類中的 Deconstruct 方法將類中的屬性解構到一些零散的變量中,然后實現這些零散變量的比較,如果有點懵的話,考慮下面的 Rectangle 類。

  1. public class Rectangle 
  2.    { 
  3.        public int Length { get; set; } 
  4.        public int Breadth { get; set; } 
  5.        public Rectangle(int x, int y) => (Length, Breadth) = (x, y); 
  6.        public void Deconstruct(out int x, out int y) => (x, y) = (Length, Breadth); 
  7.    } 

接下來看一下如何在 Rectangle 上使用 位置模式。

  1. static void Main(string[] args) 
  2.         { 
  3.             Rectangle rectangle = new Rectangle(10, 10); 
  4.             var result = rectangle switch 
  5.             { 
  6.                 Rectangle(0, 0) => "The value of length and breadth is zero."
  7.                 Rectangle(10, 10) => "The value of length and breadth is same – this represents a square."
  8.                 Rectangle(10, 5) => "The value of length is 10, breadth is 5."
  9.                 _ => "Default." 
  10.             }; 
  11.             Console.WriteLine(result); 
  12.         } 

如果還是蒙的話繼續看看最終生成的 IL 代碼,一目了然。

  1. private static void Main(string[] args) 
  2.  Rectangle rectangle = new Rectangle(10, 10); 
  3.  if (1 == 0) 
  4.  { 
  5.  } 
  6.  if (rectangle == null
  7.  { 
  8.   goto IL_0056; 
  9.  } 
  10.  rectangle.Deconstruct(out int x, out int y); 
  11.  string text; 
  12.  if (x != 0) 
  13.  { 
  14.   if (x != 10) 
  15.   { 
  16.    goto IL_0056; 
  17.   } 
  18.   if (y != 5) 
  19.   { 
  20.    if (y != 10) 
  21.    { 
  22.     goto IL_0056; 
  23.    } 
  24.    text = "The value of length and breadth is same – this represents a square."
  25.   } 
  26.   else 
  27.   { 
  28.    text = "The value of length is 10, breadth is 5."
  29.   } 
  30.  } 
  31.  else 
  32.  { 
  33.   if (y != 0) 
  34.   { 
  35.    goto IL_0056; 
  36.   } 
  37.   text = "The value of length and breadth is zero."
  38.  } 
  39.  goto IL_005e; 
  40.  IL_0056: 
  41.  text = "Default."
  42.  goto IL_005e; 
  43.  IL_005e: 
  44.  if (1 == 0) 
  45.  { 
  46.  } 
  47.  string result = text; 
  48.  Console.WriteLine(result); 

C# 8 的 屬性模式

屬性模式常用于實現基于類中屬性的比較,考慮下面的 Employee 類。

  1. public class Employee 
  2.     { 
  3.         public int Id { get; set; } 
  4.         public string FirstName { get; set; } 
  5.         public string LastName { get; set; } 
  6.         public decimal Salary { get; set; } 
  7.         public string Country { get; set; } 
  8.     } 

下面的代碼片段展示了如何利用 屬性模式 實現 employee 的個人所得稅計算。

  1. public static decimal ComputeIncomeTax(Employee employee, decimal salary) => employee switch 
  2.         { 
  3.             { Country: "Canada" } => (salary * 21) / 100, 
  4.             { Country: "UAE" } => 0, 
  5.             { Country: "India" } => (salary * 30) / 100, 
  6.             _ => 0 
  7.         }; 

接下來看一下如何調用,代碼如下。

  1. static void Main(string[] args) 
  2.         { 
  3.             Employee employee = new Employee() 
  4.             { 
  5.                 Id = 1, 
  6.                 FirstName = "Michael"
  7.                 LastName = "Stevens"
  8.                 Salary = 5000, 
  9.                 Country = "Canada" 
  10.             }; 
  11.             decimal incometax = ComputeIncomeTax 
  12.             (employee, employee.Salary); 
  13.             Console.WriteLine("The income tax is {0}", incometax); 
  14.             Console.Read(); 
  15.         } 

C# 8 的 tuple模式

Tuple 模式是另一種模式類型,常用于實現同一時刻對多個 input 值進行測試,下面的代碼片段展示了如何使用 tuple模式。

  1. static void Main(string[] args) 
  2.         { 
  3.             static string GetLanguageNames(string team1, string team2) => (team1, team2) switch 
  4.             { 
  5.                 ("C++""Java") => "C++ and Java."
  6.                 ("C#""Java") => "C# and Java."
  7.                 ("C++""C#") => "C++ and C#."
  8.                 (_, _) => "Invalid input" 
  9.             }; 
  10.             (string, string, string, string) programmingLanguages = ("C++""Java""C#""F#"); 
  11.  
  12.             var language1 = programmingLanguages.Item1.ToString(); 
  13.              
  14.             var language2 = programmingLanguages.Item3.ToString(); 
  15.              
  16.             Console.WriteLine($"The languages selected are: {GetLanguageNames(language1, language2)}"); 
  17.         } 

C# 8 中對 模式匹配進行了若干種增強,使得代碼寫起來更加易讀,易維護 和 更加高效,也是這么多年程序員翹首以盼的特性之一。

譯文鏈接:https://www.infoworld.com/article/3518431/how-to-use-pattern-matching-in-csharp-80.html

 

責任編輯:武曉燕 來源: 碼農讀書
相關推薦

2021-02-01 12:36:59

C# Channels存儲

2021-01-19 05:30:55

C# 8異步流IEnumerable

2021-01-22 05:53:08

C# IndexRange

2021-01-28 05:14:40

C#接口簽名

2020-12-31 07:31:10

C# 反射數據

2021-03-07 16:37:52

C#應用程序

2018-08-03 08:37:31

設計模式IT項目GDPR

2009-08-04 10:29:06

在C#中使用存儲過程

2021-11-25 00:04:16

C# 插值字符串

2024-12-03 08:00:00

2020-01-07 09:50:41

Windows 10上帝模式Windows

2009-08-31 16:12:02

C#使用Singlet

2022-06-23 08:00:53

PythonDateTime模塊

2024-01-18 08:37:33

socketasyncio線程

2021-06-09 09:36:18

DjangoElasticSearLinux

2015-08-27 09:46:09

swiftAFNetworkin

2022-05-17 08:25:10

TypeScript接口前端

2011-08-10 09:31:41

Hibernateunion

2021-03-09 07:27:40

Kafka開源分布式

2020-11-30 11:55:07

Docker命令Linux
點贊
收藏

51CTO技術棧公眾號

成人三级在线| 欧美激情亚洲另类| 日本国产一级片| 午夜伦理在线视频| 91小视频在线观看| 国产美女精品免费电影| 国产精品23p| 极品美女一区二区三区| 91精品国产综合久久精品性色| av一区二区三区免费观看| 凸凹人妻人人澡人人添| 蜜臀99久久精品久久久久久软件| 欧美成人精品一区二区| 少妇大叫太粗太大爽一区二区| 91欧美精品| 亚洲国产精品自拍| 亚洲欧洲国产精品久久| 欧美 日韩 中文字幕| 蜜桃视频在线观看一区二区| 久久久久中文字幕| 中文字幕美女视频| 亚洲三级网页| 精品久久人人做人人爰| 亚洲欧美视频二区| 91豆花视频在线播放| 国产精品久久久久久户外露出| 国产精品一区二区三区观看| 亚洲一区在线观| 久久久精品午夜少妇| 欧美国产日本在线| 少妇高潮在线观看| 极品美女一区二区三区| 国产视频自拍一区| 国产大尺度视频| 爱情电影网av一区二区| 色婷婷久久久综合中文字幕 | 天天综合在线视频| 国产激情91久久精品导航| 国产精品一区专区欧美日韩| 中文字幕在线日本| 欧美亚洲三区| 91精品国产精品| 国产在线观看免费av| 中文字幕午夜精品一区二区三区| 这里精品视频免费| 久久久久久成人网| 波多野结衣在线观看一区二区| 日韩高清免费观看| 在线观看国产网站| 欧美成人基地| 精品爽片免费看久久| 欧产日产国产精品98| 久久九九热re6这里有精品 | 成人在线一区二区| 中文字幕人妻色偷偷久久| 三级欧美韩日大片在线看| 欧洲成人在线观看| 日批视频免费在线观看| 久久亚洲二区| 国产精品9999| 中文字幕乱码视频| 久久国产综合精品| 91免费国产网站| 99热这里只有精品5| 国产精品亚洲一区二区三区妖精 | 日韩一级片免费看| 不卡视频免费播放| 久久婷婷开心| 北岛玲日韩精品一区二区三区| 国产欧美精品一区二区色综合| 亚洲免费精品视频| gogo在线观看| 婷婷成人激情在线网| 女人和拘做爰正片视频| gogo亚洲高清大胆美女人体| 欧美天堂亚洲电影院在线播放| 中文字幕 91| 精品成人18| 亚洲精品乱码久久久久久金桔影视 | 欧美特黄色片| 精品日韩欧美在线| 精品夜夜澡人妻无码av | 成人久久视频在线观看| 国内精品一区二区| 国产福利片在线| 自拍偷自拍亚洲精品播放| 妺妺窝人体色www看人体| 日韩电影毛片| 欧美日韩亚洲综合在线 | 中文字幕国内自拍| 精品国产伦一区二区三区观看说明| 精品奇米国产一区二区三区| 日本黄色网址大全| 97色伦图片97综合影院| 97国产精品人人爽人人做| 国产熟妇一区二区三区四区| 韩国一区二区三区| 精品伦精品一区二区三区视频| 国产午夜精品一区理论片| 亚洲日本va午夜在线影院| 国产精品网站免费| 小说区图片区亚洲| 亚洲美女福利视频网站| 久久国产精品国语对白| 丝袜亚洲另类欧美综合| 91免费在线观看网站| 国产一级二级三级在线观看| 一区二区三区在线观看网站| 妺妺窝人体色www在线观看| 77成人影视| 日韩在线观看成人| 天堂а√在线中文在线新版| 国产xxx精品视频大全| 日韩精品不卡| 国产色播av在线| 日韩欧美中文字幕制服| 精品一区二区三孕妇视频| 尤物精品在线| 91色p视频在线| 国产视频第一页在线观看| 午夜成人免费视频| 国产成人av免费观看| 色综合天天爱| 日本亚洲欧美三级| 亚洲av无码乱码国产精品久久| 国产精品国产三级国产三级人妇| 精品一卡二卡三卡| 麻豆一区二区麻豆免费观看| 欧美大片在线影院| 国产露脸91国语对白| 国产精品视频第一区| 91av在线免费播放| 日韩超碰人人爽人人做人人添| 欧美国产精品va在线观看| 国产人妖在线播放| 中文字幕一区免费在线观看| 欧在线一二三四区| 久久av影视| 欧美专区第一页| 欧美日韩在线精品一区二区三区激情综 | 亚洲精品成人a8198a| 都市激情亚洲综合| 亚洲女人天堂av| 国产精品自拍99| 99久久精品免费看国产| 性一交一乱一伧国产女士spa| 国产精品va视频| 大胆人体色综合| av一区二区三| 亚洲一区二区三区四区在线免费观看 | 国产福利精品一区二区| 日本三级中文字幕在线观看| 四虎国产精品免费久久5151| 久久精品国产一区二区三区| 91亚洲国产成人久久精品麻豆| 国产精品人妖ts系列视频| 一区二区xxx| 色婷婷亚洲mv天堂mv在影片| 成人夜晚看av| 欧美xxxx少妇| 亚洲成年网站在线观看| 天天操天天干视频| 26uuu另类欧美| 国产精品天天av精麻传媒| 国产一区二区在线| 国产精品日韩在线播放| 高清免费电影在线观看| 欧美tickling网站挠脚心| 国产中文字字幕乱码无限| 成人av先锋影音| 青青在线视频免费| 国产精品精品| 国产精品日韩一区二区| 在线观看的黄色| 中文字幕亚洲激情| 国产福利小视频| 精品久久久久久亚洲国产300| 无码人妻精品一区二区中文| 久久国产精品色婷婷| youjizz.com在线观看| 香蕉视频一区| 成人精品视频在线| 鲁鲁在线中文| 中文字幕一区二区三区电影| 成 人 黄 色 片 在线播放| 欧美日韩国产在线看| 99久久99久久精品免费看小说.| 国产精品 日产精品 欧美精品| 69sex久久精品国产麻豆| 国内黄色精品| 国产精品视频免费一区二区三区| 亚洲欧洲自拍| 久久影院模特热| 三区在线视频| 日韩一区二区在线看| 日韩国产成人在线| 一区二区三区欧美亚洲| 国产肥白大熟妇bbbb视频| 国产久卡久卡久卡久卡视频精品| 国产成人a亚洲精v品无码| 综合一区av| 水蜜桃亚洲一二三四在线| 51vv免费精品视频一区二区| 国产精品专区一| 手机av在线| 欧美老女人xx| 在线播放日本| 日韩精品一二三四区| 99国产精品一区二区三区| 在线视频一区二区三| 国产一级特黄毛片| 中文字幕一区免费在线观看| 精品欧美一区二区久久久| 大白屁股一区二区视频| 亚洲综合欧美在线| 国产精品视频久久一区| 97av中文字幕| 偷偷www综合久久久久久久| 免费看国产精品一二区视频| 伊人久久大香线蕉av超碰| 国产在线观看精品| 亚洲天堂1区| 日本中文字幕成人| 超免费在线视频| 欧美插天视频在线播放| 日本激情在线观看| 亚洲性生活视频| 你懂的在线网址| 精品视频在线播放| 少妇一级淫片免费看| 日韩一区二区三免费高清| 一区二区不卡视频在线观看| 色婷婷一区二区| 樱花视频在线免费观看| 狠狠做深爱婷婷久久综合一区| 精品无码人妻一区二区三区品 | 中文字幕在线观看亚洲| 黄色片在线播放| 国产丝袜视频一区| 四虎在线观看| 日韩高清不卡av| 头脑特工队2在线播放| 日韩成人中文字幕在线观看| 韩国av免费在线观看| 精品国产免费一区二区三区四区 | 国产又粗又猛又爽又黄的| 欧美少妇一区二区| 亚洲特级黄色片| 欧美丰满美乳xxx高潮www| 亚洲网站免费观看| 欧美日韩一区二区三区四区五区 | 国产高清不卡| 国产成人午夜视频网址 | 成人av男人的天堂| 懂色av一区二区| 久精品国产欧美| 国产videos久久| 五月天丁香综合久久国产 | 久久伊99综合婷婷久久伊| 国产精品成人99一区无码| 99精品视频一区二区| 国产熟妇搡bbbb搡bbbb| 国产亚洲制服色| 亚洲毛片亚洲毛片亚洲毛片| 亚洲人吸女人奶水| 免费一级黄色大片| 午夜精品久久久久久久蜜桃app| 欧美三日本三级少妇99| 91激情五月电影| 国产女人18毛片水真多| 欧美mv和日韩mv的网站| 香蕉视频国产在线| 中文字幕精品国产| 国产成人l区| 欧美亚洲另类视频| 电影在线观看一区二区| 亚洲综合国产精品| 欧美理论电影在线精品| 亚洲精品一区二区三区樱花 | 男人操女人免费软件| 老妇喷水一区二区三区| 中文字幕在线视频精品| av网站免费线看精品| 黄色三级生活片| 亚洲精品中文字幕乱码三区| 免费观看成人毛片| 欧美另类久久久品| 无码国产色欲xxxx视频| 深夜成人在线观看| h片在线观看视频免费| 国产精品露脸自拍| www.丝袜精品| 日韩一区二区电影在线观看| 午夜国产精品视频免费体验区| 各处沟厕大尺度偷拍女厕嘘嘘| 久久99日本精品| a级在线观看视频| 亚洲欧美电影一区二区| 亚洲欧美一二三区| 精品国产制服丝袜高跟| av在线中文| 91精品国产精品| 日韩国产在线不卡视频| 日本免费高清一区| 今天的高清视频免费播放成人| 亚洲一级片网站| 91浏览器在线视频| 麻豆亚洲av成人无码久久精品| 欧美性猛片xxxx免费看久爱| 污视频网站在线播放| 欧美成人午夜免费视在线看片| 你懂得影院夜精品a| 国产精品免费视频一区二区 | 欧美成人国产va精品日本一级| 成人短视频app| 国产综合动作在线观看| 亚洲第一偷拍| 超碰人人草人人| 国产精品人妖ts系列视频| 日本中文字幕第一页| 亚洲精品电影网站| 美足av综合网| 91在线视频精品| 日韩国产一区二区| 成年人小视频网站| 久久久综合视频| 五月天婷婷激情| 亚洲跨种族黑人xxx| 国产高清自产拍av在线| 国产一区二区黄色| 激情久久中文字幕| 男人添女人荫蒂国产| 亚洲欧美二区三区| 国产剧情久久久| 久久夜色精品国产亚洲aⅴ| 国产欧美自拍| 伊人久久99| 黄一区二区三区| 国内毛片毛片毛片毛片毛片| 欧美日韩精品欧美日韩精品一| yw视频在线观看| 国产激情久久久| 欧美日韩国产高清电影| 久久久精品三级| 中文一区二区完整视频在线观看| 色老头一区二区| 少妇高潮久久久久久潘金莲| 激情久久99| 中日韩在线视频| 国内不卡的二区三区中文字幕| 欧美特黄一级片| 日韩午夜小视频| 91超碰在线免费| 欧美一区二区三区成人久久片| 久久一日本道色综合久久| 美女久久久久久久久久| 欧美自拍丝袜亚洲| 1024视频在线| 亚洲v日韩v综合v精品v| 国产在线欧美| 免费a v网站| 色婷婷综合久久久中文一区二区| 成年人在线视频免费观看| 国产精品福利小视频| 91亚洲人成网污www| 波多野结衣电影免费观看| 亚洲成人免费av| 成人午夜影视| 91午夜理伦私人影院| 欧美午夜一区二区福利视频| 日本69式三人交| 在线亚洲+欧美+日本专区| 麻豆传媒免费在线观看| 高清国语自产拍免费一区二区三区| 好吊一区二区三区| 久久亚洲AV成人无码国产野外| 精品视频一区二区不卡| 性直播体位视频在线观看| 欧美精品一区二区三区在线四季| 乱一区二区av| 97人人澡人人爽人人模亚洲| 最近2019年手机中文字幕| 成人爽a毛片免费啪啪红桃视频| 99热成人精品热久久66| 中文字幕日韩一区二区| 午夜福利视频一区二区| 日韩美女在线观看| 欧美国产专区| 亚洲一区二区自偷自拍| 日韩免费视频一区| 欧洲精品一区二区三区| 国产女教师bbwbbwbbw| 久久精品亚洲精品国产欧美| a网站在线观看| 国产成人精品电影| 欧美日韩1区| 久久精品色妇熟妇丰满人妻| 亚洲大胆人体在线| 天堂综合在线播放| 日韩在线一级片|