zoukankan      html  css  js  c++  java
  • 【c#】6.0与7.0新特性介绍记录

    c#发展史

    引用地址:https://www.cnblogs.com/ShaYeBlog/p/3661424.html

    6.0新特性

    1.字符串拼接优化

        语法格式:$”string {参数}”  

        解释:以$符号开头开始字符串,其中以{}来进行传参,可以多个参数累加

        例如:var results = $"Hello {Name}";

    2.null检测运算符

        语法格式:【 ?.

        解释:需要判断的对象值后面跟随?号符号直接进行判断是否为空,然后条件不为空后需要执行的在“.”之后执行

        例如:

      Program pro = new Program();
                    Console.WriteLine(pro?.GetCnblogsSite());
    
     public  string GetCnblogsSite()
            {
                return "http://www.cnblogs.com/yanbigfeg";
            }

    3.自动化属性

        语法格式:attribute{get;set}="";

        解释:对象属性后面直接可以进行赋值操作。像普通赋值一样。

        例如:public string name {get;set}=“张三”;

    4.表达式方法体

        语法格式:=》

        解释:一句话的那种方法体,可以使用箭头函数,不需要大括号,更加简便

        例如: public ActionResult index ()=> View();

    5.引用静态类

        解释:可以直接引用静态类

        例如:using static System.Math;

    6.带索引的对象初始化器

        解释:就是形如字典那种形式可以直接通过索引初始化

        例如:var dic = new Dictionary<int, string> { [0]="第一个值",[1]= "第二个值"};

    7.catch和finally 中使用await

        解释:在5.0中await是不能在catch和finnaly块中使用的,在6.0移除了此限制。

    8.out参数写法

       例如:int.TryParse("123", out int x);   可以直接用的时候才定义

    9.结构体可以包含无参函数

        解释:在以前结构体是不可以包含显式的无参构造函数的,现在可以了

     7.0新特性

    1.元组

        语法格式:Tuple

        解释:可以创建不同的类型到一个集合中,然后进行返回,返回使用Item1,Item2....你以为就是这些东西吗,错了然这是4.0的东西了,现在7.0又给我们进行了优化。不过需要引用System.ValueTuple

        例如:

      static void Main(string[] args)
            {
                var data=GetFullName();
                Console.WriteLine(data.a); //可用命名获取到值
                Console.WriteLine(data.b);
                Console.WriteLine(data.c);
                Console.ReadLine();
    
            }
            //方法定义为多个返回值,并命名
            private static (string a,string b,string c) GetFullName()
            {
                return ("a","b","c");
            }
    View Code

        又例如:

    static void Main(string[] args)
            {
               //定义解构元组
                (string a, string b, string c) = GetFullName();
    
                Console.WriteLine(a);
                Console.WriteLine(b);
                Console.WriteLine(c);
                Console.ReadLine();
    
            }
            private static (string a,string b,string c) GetFullName()
            {
                return ("a","b","c");
            }
    View Code

        在补充一下原写法形式

     //元组数据创建
            public Tuple<int, string> GetTuple()
            {         
                return Tuple.Create(1, "001");
            }
     //获取元组值
            var result = GetTuple();
            Console.WriteLine(result.Item1);
            Console.WriteLine(result.Item2);
    View Code

     2.匹配模式

        2.1针对is的小扩展

            格式:a is type b

            解释:参数a是不是这个类型如果是就赋值给b然后在使用b做操作

            例如:object a = 1;if (a is int c)Console.WriteLine(c);

        2.2switch的小扩展

            格式 :case  type a:  以及筛选值的case type a when a<0:

            解释:case可以针对类型进行匹配和根据类型匹配后在进行条件筛选

    3.ref的改动

        解释:ref在以前只是用作于参数,在7.0中ref可以作为本地变量和返回值使用。

    4.局部函数

        解释:与局部变量类似,只在特定的函数中可以访问的函数。有点类似于func委托的感觉可以在内部定义一个局部方法临时使用,具体区别还没搞清除。

                    int a = 1;
                    int add(int c)
                    {
                        return c + 1;
                    }
                    Console.WriteLine(add(a));

    5.表达式方法体扩展

        解释:在6.0中一句话方法可以简写,但是构造函数,析构函数,属性访问器不可以,在7.0对此进行了扩展

        例如:

    // 构造函数的表达式写法
    public CaCheContext(string label) => this.Label = label;
    
    // 析构函数的表达式写法
    ~CaCheContext() => Console.Error.WriteLine("Finalized!");
    
    private string label;
    
    // Get/Set属性访问器的表达式写法
    public string Label
    {
        get => label;
        set => this.label = value ?? "Default label";
    }

    6.数值文字语法改进

        格式:_

        解释:运行数值中间使用“_”分割符,完全是为了可读性。没有其他实际意义。

  • 相关阅读:
    laravel 使用 php artisan make:model到指定目录(controller同理)
    Mysql常见的优化策略
    laravel路由别名
    laravel whereNotIn where子查詢
    phpstorm界面不停的indexing,不停的闪烁
    Linux下Redis开机自启(Centos6)
    数据结构常用算法
    困惑的前置操作与后置操作
    SSH框架整合中Hibernate实现Dao层常用结构
    过滤器与拦截器区别
  • 原文地址:https://www.cnblogs.com/yanbigfeg/p/9186073.html
Copyright © 2011-2022 走看看