模式匹配

从面向对象的观点来看,最好总是使用具体的类型和接口来解决问题。然而,通常这并不容易做到。在数据库中,查询可能会给出与任何层次结构都无关的不同对象类型。访问API服务时,可以返回一个列表或对象,或者可能什么也不返回。因此,方法通常应该与不同的类型一起工作。这就是模式匹配可以提供帮助的地方。

例如,下面创建了一个不同对象的数组。在这个名为data的数组中,第一个元素是null,其后是值为42的整数、一个字符串、一个Person类型的对象,以及一个包含Person对象的数组:

       static void Main(string[] args)
        {
            var p1 = new Person{FirstName = "Katharina",LastName = "Nagel"};
            var p2 = new Person{FirstName = "Matthias",LastName = "Nagel"};
            var p3 = new Person{FirstName = "Stephanie",LastName = "Nagel"};
            object[] data = {null,42,"astring",p1,new Person[]{p2,p3}};
            foreach(var item in data)
            {
                IsOperator(item);
            }
            foreach(var item in data)
            {
                switchStatament(item);
            }
        }

在C# 7中的模式匹配中,is运算符和switch语句得到了三种模式的增强:const模式、type模式和var模式。下面从is运算符开始详细介绍。

模式匹配与is运算符

与is运算符的简单匹配是const模式。在这个模式中,可以将对象与常量值进行比较,比如null或42:

        static void IsOperator(object item)
        {
            //const pattern
            if(item is null)
            {
                System.Console.WriteLine("
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值