美文网首页
C#语法糖之Tuple

C#语法糖之Tuple

作者: 勿念情 | 来源:发表于2022-09-01 09:54 被阅读0次

在某些情况下,我们需要有多个返回值。举个例子,比如某个函数提供的功能是查询数组中的最大值和最小值。
通常我们会考虑把为返回值声明一个结构体,或者是把返回值通过out返回出去。即:

// first way
struct MinMaxResult
{
    public int Min { get; set; }
    public int Max { get; set; }
}

MinMaxResult FindMinMax(int[] data);

// second way
void FindMinMax(int[] data, out int min, out int max);

对于某些很常用的、或者具有意义的结果,我们通常会用声明结构体。比如Point或者Rect。但对于某些使用范围仅仅在一两个文件的,我们通常不去声明一个结构体。这个时候我们可以使用Tuple。

Tuple<int, int> FindMinMax(int[] data);

// How to use it
var minMaxResult = FindMinMax(data);
int min = minMaxResult.Item1;
int max = minMaxResult.Item2;

可以看到,代码会更加的灵活。但是同样也导致了别的问题。我们使用的时候,Item1和Item2这种的名字没有实际的意义,导致代码可读性变差。所以C#在后续的版本中进行了改进,我们可以写成这样:

(int min, int max) FindMinMax(int[] data);

// How to use it
var result = FindMinMax(data);
int min = result.min;
int max = result.max;

// Another way
int min, max;
(min, max) = FindMinMax(data);

// Or even shorter
(int min, int max) = FindMinMax(data);

// Or you just want max
(_, int max) = FindMinMax(data);

如果你没有对Tuple起名字,默认的名字依旧是Item1、Item2...

(int, int) FindMinMax(int[] data);

// How to use it
var result = FindMinMax(data);
int min = result.Item1;
int max = result.Item2;

相关文章

  • C#语法糖($)(?.)(??)

    实际上是C# 6.0对string.Format的改进 将字符串文本标识为内插字符串($) 根据微软的例子来看: ...

  • C#语法糖

    定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter ...

  • C#语法糖

    计算机语言中添加某种语法,这种语法对语言的功能没有影响,但是方便程序员使用。使用语法糖增加代码的可读性,减少程序代...

  • C# 7.0 新特性

    C# 7.0 也快要发布了,查看了下new features,感觉C#也越来越有点儿动态语言的感觉了,各种语法糖,...

  • 探索C#之6.0语法糖剖析

    自动属性默认初始化 使用方法: 编译器生成代码: 从生成代码中可以看出编译器是在实例化构造函数时,初始化属性信息的...

  • ASP.NET 谨用 async/await

    C# 5.0 引入 async/await 关键字,旨在简化异步编程模型,抛去语法糖就是 Net4.0 的 Tas...

  • C#语法糖大汇总

    1. 经过简化的Property早些时候我们这样声明Property 千篇一律的这样声明,没有多大意义,于是C#...

  • Dart的一些语法糖(持续更新)

    语法糖 ?. 与 ?? dart 语法糖 ?. dart 语法糖 ??

  • Swift语法糖的使用

    Swift语法糖的使用 语法糖的简介 语法糖Selector例子 语法糖的简介 我个人对语法糖的理解就是让你的代码...

  • 浅析ES6 箭头函数(上)

    最初接触 箭头函数 => 是在C# 中的Lambda表达式, Lambda表达式作为CLR4 中新引入的语法糖 本...

网友评论

      本文标题:C#语法糖之Tuple

      本文链接:https://www.haomeiwen.com/subject/mxmenrtx.html