zoukankan      html  css  js  c++  java
  • pattern matching is C# 7.0

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is

    原来的版本

      private static string DateTimeFormat(DateTime date)
            {
                string result = string.Empty;
                if (Logger == null)
                {
                    return result;
                }
                var appenders = GetAppenders();
                var appender = appenders.FirstOrDefault(x => x is RollingFileAppender) as RollingFileAppender;
                if (appender != null)
                {
                    result = date.ToString(appender.DatePattern, DateTimeFormatInfo.InvariantInfo);
                }
                else
                {
                    result = date.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
                }
                return result;
            }

    优化后的版本

      private static string DateTimeFormat(DateTime date)
            {
                string result = string.Empty;
                if (Logger == null)
                {
                    return result;
                }
                var appenders = GetAppenders();
                if (appenders.FirstOrDefault(x => x is RollingFileAppender) is RollingFileAppender appender)
                {
                    result = date.ToString(appender.DatePattern, DateTimeFormatInfo.InvariantInfo);
                }
                else
                {
                    result = date.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
                }
                return result;
            }

    涉及到的新知识点

    Type pattern

    When using the type pattern to perform pattern matching, is tests whether an expression can be converted to a specified type and, if it can be, casts it to a variable of that type. It is a straightforward extension of the is statement that enables concise type evaluation and conversion. The general form of the is type pattern is:

    expr is type varname 

    where expr is an expression that evaluates to an instance of some type, type is the name of the type to which the result of expr is to be converted, and varname is the object to which the result of expr is converted if the is test is true.

    The is expression is true if any of the following is true:

    • expr is an instance of the same type as type.

    • expr is an instance of a type that derives from type. In other words, the result of expr can be upcast to an instance of type.

    • expr has a compile-time type that is a base class of type, and expr has a runtime type that is type or is derived from type. The compile-time type of a variable is the variable's type as defined in its declaration. The runtime type of a variable is the type of the instance that is assigned to that variable.

    • expr is an instance of a type that implements the type interface.

    If exp is true and is is used with an if statement, varname is assigned and has local scope within the if statement only.

  • 相关阅读:
    Docker windows下安装,入门及注意事项,并搭建包含Nodejs的webapp
    360浏览器table中的td为空时td边框不显示的解决方法
    关于发布webservice提示The test form is only available for requests from the local machine
    CRM相关SQl手记
    页面右下角弹出的消息提示框
    MS CRM2011 js常用总结
    MVC razor 使用服务器控件
    常用正则表达式
    CRM 2011 常用对象
    人工智能AI-机器视觉CV-数据挖掘DM-机器学习ML-神经网络-[资料集合贴]
  • 原文地址:https://www.cnblogs.com/chucklu/p/8796563.html
Copyright © 2011-2022 走看看