设为首页 加入收藏

TOP

C#最新功能(6.0、7.0)(二)
2019-09-17 17:24:54 】 浏览:24
Tags:新功能 6.0 7.0
return count; int Add(int a, int b) { return a + b; } }

5. Ref 局部变量和返回结果

此功能允许使用并返回对变量的引用的算法,这些变量在其他位置定义。
例如:

class NumberStore
{
    int[] numbers = { 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023 };

    public ref int FindNumber(int target)
    {
        for (int ctr = 0; ctr < numbers.Length; ctr++)
        {
            if (numbers[ctr] >= target)
                return ref numbers[ctr];
        }
        return ref numbers[0];
    }

    public override string ToString() => string.Join(" ", numbers);
}
var store = new NumberStore();
Console.WriteLine($"Original sequence: {store.ToString()}");
int number = 16;
ref var value = ref store.FindNumber(number);
value *= 2;
Console.WriteLine($"New sequence:      {store.ToString()}");
// The example displays the following output:
//       Original sequence: 1 3 7 15 31 63 127 255 511 1023
//       New sequence:      1 3 7 15 62 63 127 255 511 1023

31变成62了,对象中的数组值改变了,这个功能觉得要慎用。

6. 弃元

通常,在进行元组解构或使用 out 参数调用方法时,必须定义一个其值无关紧要且你不打算使用的变量。 为处理此情况,C# 增添了对弃元的支持 。 弃元是一个名为 _(下划线字符)的只写变量,可向单个变量赋予要放弃的所有值。 弃元类似于未赋值的变量;不可在代码中使用弃元(赋值语句除外)。简单来说就是放弃不需要的值。
例如:

private static (string, double, int) Test(string name)
{
    return (name, 1.234, 20);
}
//使用
var (name, _, age) = Test("测试");
Console.WriteLine($"测试弃元: Name:{name}, Age:{age}");
//运行结果:测试弃元: Name:测试, Age:20

7. 二进制文本和数字分隔符

误读的数值常量可能使第一次阅读代码时更难理解。 位掩码或其他符号值容易产生误解。 C# 7.0 包括两项新功能,可用于以最可读的方式写入数字来用于预期用途:二进制文本和数字分隔符 。简单来说就是可以把数字分割等
例如:

int test = 1_123_21;
Console.WriteLine(test);
//结果 112321

8. 引发表达式

throw 始终是一个语句。 因为 throw 是一个语句而非表达式,所以在某些 C# 构造中无法使用它。
例如:string test = false ? "" : throw new Exception("必须是字符串,否则报错。");

9. 增加异步返回类型ValueTask

异步方法返回类型不限于 Task、Task<T> 和 void,可以是ValueTask<int>,可避免在性能上分配 Task。
可以查看 【C#中await/async闲说】,这篇文章对异步性能进行了说明,对ValueTask的使用进行了说明

 

其他的版本的基础功能

1.  C#高级功能(四)扩展方法和索引

2. C#高级功能(三)Action、Func,Tuple

3. C#高级功能(二)LINQ 和Enumerable类

4. C#高级功能(一)Lambda 表达式

5. C#中泛型的解释(object,list,var,dynamic的区别)

6. C#中委托

7. C#和.NET版本对比

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇DotNet跨平台 - docker部署.net c.. 下一篇笔记: ASP.NET Core视图组件

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目