【c#】6.0与7.0新特性介绍记录-阿里云开发者社区

开发者社区> yanbigfeg> 正文

【c#】6.0与7.0新特性介绍记录

简介: c#发展史 引用地址:https://www.cnblogs.com/ShaYeBlog/p/3661424.html 6.0新特性 1.字符串拼接优化     语法格式:$”string {参数}”       解释:以$符号开头开始字符串,其中以{}来进行传参,可以多个参数累加     例如:var results = $"Hello {Name}"; 2.
+关注继续查看

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.数值文字语法改进

    格式:_

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

 

作者:YanBigFeg —— 颜秉锋

出处:http://www.cnblogs.com/yanbigfeg

本文版权归作者和博客园共有,欢迎转载,转载请标明出处。如果您觉得本篇博文对您有所收获,觉得小弟还算用心,请点击右下角的 [推荐],谢谢!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器
Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
672 0
Linux中系统整体性能监控工具详细介绍
http://linux.chinaitlab.com/soft/524753.html
575 0
[C#]6.0新特性浅谈
原文:[C#]6.0新特性浅谈 C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间。所以现在再来聊一聊新版本带来的新特性可能也还不算晚吧? 一、nameof关键字 这绝对是整个新版本最让我期待的内容,它给代码重构带来了巨大的便利。
738 0
【产品介绍】“弹性裸金属服务器”到底有那些特性?
弹性裸金属服务器的八大特性,总结相关特性。那么阿里云弹性裸金属服务器(神龙)的表现呢
3032 0
ant 信息介绍
引用:http://baike.baidu.com/view/42824.htm#2  Ant 开发     Ant的构建文件     当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。
571 0
[20121214]数据库错误记录.txt
[20121214]数据库错误记录.txt--自己参照许多文档,写了一个检测数据库错误的例子:--以sys用户登录,建立表CREATE TABLE SYS.ERROR_LOG(  IP_ADDRESS       VARCHAR2(30 BYTE),  USER...
621 0
+关注
63
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载