在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    快速測(cè)試表達(dá)式是否具有某一特性:C# 中的模式匹配

    C# 中的模式匹配

    模式匹配是測(cè)試表達(dá)式是否具有某一特性的方法。C# 提供了非常簡(jiǎn)潔優(yōu)雅的語(yǔ)法用于匹配模式并在匹配時(shí)執(zhí)行相應(yīng)的操作。

    檢查匹配

    模式匹配最高頻的場(chǎng)景是確保值不為 null。

    public void IsMatch(int? number) { if (number is int n) { Console.WriteLine(#34;參數(shù) ‘number’ 具有值{n}”); } else { Console.WriteLine(“參數(shù)值為null”); } }

    上述代碼使用 is 檢查 number 是否有值,若有,則賦給新變量 n。注意,新變量?jī)H在 if 語(yǔ)句塊中有效。

    離散值匹配

    檢查參數(shù)是否等于指定的值。支持的類型包括字符串和枚舉,從 C# 11 開(kāi)始,還支持 Span 和 ReadOnlySpan。

    public string ConstantMatch(string? name) => name switch { “張三” => “我是張三”, “李四” => “我是李四”, _ => #34;我不知道自己是誰(shuí)” }; public string ConstantMatch(ReadOnlySpan name) => name switch { “張三” => “我是張三”, “李四” => “我是李四”, _ => #34;我不知道自己是誰(shuí)” };

    上面的代碼,根據(jù) type 參數(shù)的值來(lái)返回不同的字符串。棄用符號(hào) _ 表示未在類表中定義的任意其它值,包括 null。

    類型匹配

    模式匹配的另一用途是檢查值是否與給定類型匹配。

    public string TypeMatch(Animal? animal) => animal switch { Cat => “發(fā)現(xiàn)喵咪一只”, Dog => “發(fā)現(xiàn)汪汪一只”, null => “毛都沒(méi)發(fā)現(xiàn)”, _ => #34;發(fā)現(xiàn)不知道是啥的一個(gè)東西” };

    上面的代碼,根據(jù) animal 參數(shù)的實(shí)際類型返回不同的字符串。棄元符號(hào) _ 表示未列出的任意其它值。

    關(guān)系匹配

    關(guān)系匹配可以將數(shù)值與常量進(jìn)行比較。

    public string RelationalMatch(int age) => age switch { “嬰兒”, “幼兒”, “兒童”, “少年”, _ => “成年” };

    上述代碼根據(jù) age 的值大小返回不同的值。棄元符號(hào) _ 表示未列出的任意其它值。

    關(guān)系匹配模式還可以使用 and 和 or 來(lái)組合條件。

    public static string GetWaterState(int temperature) => temperature switch { (> 0) and ( “液體”, “固體”, > 100 => “氣體”, 0 => “固體/液體臨界點(diǎn)”, 100 => “液體/氣體臨界點(diǎn)”, };

    屬性匹配

    還可以對(duì)指定對(duì)象的屬性進(jìn)行匹配,可以實(shí)現(xiàn)多個(gè)參數(shù)同時(shí)檢查。

    public record Order(int Items, decimal Cost); public decimal CalculateDiscount(Order order) => order switch { (Items: > 10, Cost: > 1000.00m) => 0.10m, (Items: > 5, Cost: > 500.00m) => 0.05m, Order { Cost: > 250.00m } => 0.02m, null => throw new ArgumentNullException(nameof(order)), var someObject => 0m, };

    上面的代碼中,前兩項(xiàng)檢查 Items 和 Cost 屬性的值。第三項(xiàng)只檢查了 Cost 屬性的值。第四項(xiàng)檢查是否為 null,第五項(xiàng)匹配任意其它值。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月11日 18:43
    下一篇 2022年7月11日 18:43

    相關(guān)推薦

    • 11月27日哈爾濱疫情最新消息:昨日新增本土85+183

      黑龍江省最新疫情通報(bào) 11月26日0-24時(shí),全省新增本土確診病例132例(含無(wú)癥狀感染者轉(zhuǎn)確診病例25例)。哈爾濱市85例(香坊區(qū)22例、南崗區(qū)17例、道里區(qū)17例、呼蘭區(qū)7例、…

      2022年11月27日
    • 漢中昨日新增本土4+3 11月27日漢中疫情最新通報(bào)

      11月26日陜西新增51例本土確診病例 新增902例本土無(wú)癥狀感染者 11月26日0-24時(shí),新增報(bào)告本土確診病例51例(輕型49例、普通型2例),其中安康28例(1例為無(wú)癥狀轉(zhuǎn)確…

      2022年11月27日
    • 渭南疫情最新情況11月27日通報(bào):昨日新增本土7+17

      11月26日陜西新增51例本土確診病例 新增902例本土無(wú)癥狀感染者 11月26日0-24時(shí),新增報(bào)告本土確診病例51例(輕型49例、普通型2例),其中安康28例(1例為無(wú)癥狀轉(zhuǎn)確…

      2022年11月27日
    • 存儲(chǔ)過(guò)程語(yǔ)法(sql server存儲(chǔ)過(guò)程語(yǔ)法)

      今天小編給各位分享存儲(chǔ)過(guò)程語(yǔ)法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過(guò)程語(yǔ)法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! oracle存儲(chǔ)過(guò)程基本語(yǔ)法…

      2022年11月26日
    • 今天杭州疫情最新消息:0-10時(shí)新增1+28

      11月26日0-10時(shí),杭州新增1例本土新冠病毒肺炎確診病例(輕型),為主動(dòng)就診發(fā)現(xiàn);杭州新增28例新冠病毒無(wú)癥狀感染者,12例為卡口攔截發(fā)現(xiàn),9例為集中隔離點(diǎn)檢出,6例為居家隔離…

      2022年11月26日
    • 11月26日齊齊哈爾市疫情最新消息通報(bào):昨日本土無(wú)癥狀感染者69例

      11月25日0-24時(shí),全省新增本土確診病例134例(含無(wú)癥狀感染者轉(zhuǎn)確診病例9例)。哈爾濱市117例(南崗區(qū)29例、香坊區(qū)28例、道里區(qū)22例、呼蘭區(qū)9例、道外區(qū)8例、松北區(qū)6例…

      2022年11月26日
    • 鄭州市疫情11月26日最新消息通報(bào):昨日新增本土180+777

      11月25日0—24時(shí),河南省新增本土確診病例186例(鄭州市180例,其中91例為隔離管控發(fā)現(xiàn)、3例為重點(diǎn)人群篩查發(fā)現(xiàn)、40例為社區(qū)篩查發(fā)現(xiàn)、40例為主動(dòng)就診發(fā)現(xiàn)、5例為無(wú)癥狀感…

      2022年11月26日
    • 11月26日黑河市疫情最新消息通報(bào):昨日新增本土3+26

      11月25日0-24時(shí),全省新增本土確診病例134例(含無(wú)癥狀感染者轉(zhuǎn)確診病例9例)。哈爾濱市117例(南崗區(qū)29例、香坊區(qū)28例、道里區(qū)22例、呼蘭區(qū)9例、道外區(qū)8例、松北區(qū)6例…

      2022年11月26日
    • 11月26日佳木斯市疫情最新消息通報(bào):昨日新增本土5+14

      11月25日0-24時(shí),全省新增本土確診病例134例(含無(wú)癥狀感染者轉(zhuǎn)確診病例9例)。哈爾濱市117例(南崗區(qū)29例、香坊區(qū)28例、道里區(qū)22例、呼蘭區(qū)9例、道外區(qū)8例、松北區(qū)6例…

      2022年11月26日
    • 11月26日綏化市疫情最新消息通報(bào):昨日新增本土5+105

      11月25日0-24時(shí),全省新增本土確診病例134例(含無(wú)癥狀感染者轉(zhuǎn)確診病例9例)。哈爾濱市117例(南崗區(qū)29例、香坊區(qū)28例、道里區(qū)22例、呼蘭區(qū)9例、道外區(qū)8例、松北區(qū)6例…

      2022年11月26日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息