.Net Core技术研究-Span 和ValueTuple

性能是.Net Core一个非常关键的特性,今天我们重点研究一下ValueTuple<T>和Span<T>.

一、方法的多个返回值的实现,看ValueTuple<T>

日常开发中,假如我们一个方法有多个返回值,我们可能会用Out出参,或者使用一个自定义类/匿名类型,或者Tuple<T>. 

Out出参可以使用,但是在编写Async方法时不支持。

自定义类/匿名类型,需要我们根据返回值的结构,自定义一个类型,带来性能开销,同时增加了编码工作量,同时需要考虑跨域序列化的问题。

.Net Framework 4.0后引入了Tuple<T>元组,但是Item1,Item2,...不够友好,方法调用方需要了解分别代表的含义。

现在我们看看ValueTuple<T>的实现

C# 7支持返回多个值的语言特性,我们写两个示例代码Tuple<T>和ValueTuple<T>,对比一下:

1 /// <summary> 2 /// Tuple 3 /// </summary> 4 /// <returns></returns> 5 private Tuple<string, List<int>> GetValues() 6 { 7 return new Tuple<string, List<int>>("C7", new List<int> { 1, 2, 3 }); 8 } 9 10 /// <summary> 11 /// ValueTuple 12 /// </summary> 13 /// <returns></returns> 14 private (string, List<int>) GetValuesN() 15 { 16 return ("C7", new List<int> { 1, 2, 3 }); 17 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfzxs.html