迷恋自留地 发表于 2020-8-13 16:57

【笔记】【ASP.NET&NETCORE】 C#7.0新特性和语法糖详解

# C#7.0新特性和语法糖详解

---
伴随Visual Studio 2017的发布,C#7.0开始正式走上工作岗位。对于早已熟悉了旧版本C#的开发者来说,C#7.0增加的不少新特性和语法糖能在很大程度上提升编程效率并降低出错率。本文将阐述C#7.0给出的几个改进。

---

1. 元组——更优雅地返回多个值

之所以将元组放在第一位,是因为它对C#编程体验的提升实在是太大了。元组这个概念在以前就已经被引入了C#,只不过它是通过一个名为Tuples的泛型类来实现的。使用这个泛型类虽然可以达到类似元组的效果,但是可读性实在是太差了,完全就没有办法通过代码理解函数返回的到底是什么,本应该是人类友好的参数名不得不变成Item1、Item2这样的抽象名称。也正是因为如此,一般的开发者更倾向于自己定义一个结构来用于返回多个值。

C#7.0引入的元组语法能让你更优雅地完成这一任务。你可以通过这种方式来表示一个函数的返回值类型:

```
         //元组的使用
            //自己定义一个结构来用于返回多个值
            // string a, c; int b;
            //(a,b,c)= yunzu.whomi();
            // Console.WriteLine(a+b+c);
```

2. 局部函数——函数作用域新玩法

鉴于元组可能会炸脑,所以现在来点轻松的——局部函数,这是比较容易理解的一个新特性。

简而言之,现在可以在函数里定义函数了,而且通常这个函数里的函数只能在外层函数里访问。直接上例子:

```
            //局部函数——函数作用域新玩法
            //现在可以在函数里定义函数了,而且通常这个函数里的函数只能在外层函数里访问
            //int add(int a,int b){
            //    return a + b;
            //}
            //int frist = 1;
            //int sencond = 2;
            //int third = add(frist, sencond);
            //Console.WriteLine(third);
```
3. 引用传递和引用返回——不必担心值类型的引用传递

熟悉C#的朋友肯定知道,如果操作数是值类型,那么赋值运算符(等号)默认传递是这个类型的值;但是某些时候,我们不希望C#“自作聪明”地给我们传递值,而希望传递这个值类型的引用。   
在C#7.0中,微软重新利用了使用率不高的关键字ref,来表明我们要传递的是一个引用而不是值。下面是实例:

```
   //c#7.0引用传递和引用返回
            int a = 0;
            ref int b = ref a;
            b = 3;
            Console.WriteLine(b);//b=3
```
4.语法糖——数字里可以添加下划线增强可读性

现在C#7.0认为,1234_5678和12345678是一个数字了。也就是,数字中的下划线会被忽略。


```

            // 语法糖——数字里可以添加下划线增强可读性
            //现在C#7.0认为,1234_5678和12345678是一个数字了。也就是,数字中的下划线会被忽略。
            //int a = 1234_1234;
            //Console.WriteLine(a);
```

总结:
C#7.0加入的新特性和语法糖可以非常有效地提升我们编程的效率,也更有利于降低错误率。了解它们,对以后的工作将带来极大的帮助

爱欣呐 发表于 2020-9-15 17:24

CarroAro 发表于 2020-8-13 17:58
Visual Studio 2017??
现在不是用2020吗?

我特地去官网看了一下还是2019 啊,,

不知道改成啥 发表于 2020-8-15 22:03

CarroAro 发表于 2020-8-13 17:58
Visual Studio 2017??
现在不是用2020吗?

2020,哥们还没睡醒把,哪来的2020?

CarroAro 发表于 2020-8-13 17:58

Visual Studio 2017??
现在不是用2020吗?

lene 发表于 2020-8-13 18:24

大众PC和笔记本的NET框架跟不上发展...

偶尔平凡 发表于 2020-8-13 19:44

小非凡 发表于 2020-8-13 21:13

迷恋自留地 发表于 2020-8-14 11:00

本帖最后由 迷恋自留地 于 2020-12-2 10:20 编辑

小非凡 发表于 2020-8-13 21:13
赶紧更新VS2020吧2019够香

迷恋自留地 发表于 2020-8-14 11:01

CarroAro 发表于 2020-8-13 17:58
Visual Studio 2017??
现在不是用2020吗?

是的,这是c#7.0的语法特性

JustQin 发表于 2020-8-18 16:21

唉,这下c#开发者也碎片化了
页: [1] 2
查看完整版本: 【笔记】【ASP.NET&NETCORE】 C#7.0新特性和语法糖详解