值元组

虽然C#的方法只能返回一个单独的对象,但是有很多技术可以在一个调用里返回多个值。

这些技术包括out和ref变量、类变量、自定义类和结构体、匿名类和元组。

每种技术都有自己的优势和劣势。

本质上,元组是一个有序的元素集合,其中元素可能是相同或者不同的数据类型。

元组仅仅是通过使用圆括号包裹和逗号分隔的方式提供了引用和操作一组元素的方便方法。

C#
  (string,int) CreateSampleTuple()
  {
      return ("周一 坏!", 1234567);
  }
  
  var item = CreateSampleTuple();

  await Console.Out.WriteLineAsync($"我真的会大叫{item.Item1},每周有多少天{item.Item2}");

概括起来,元组易于创造但是调用相对麻烦,因为元组的元素只能靠没有描述性的名称Item1、Item2等调用。

另外,因为元组是类、引用类型,所以它们需要在堆上创建,并在不再引用的时候被垃圾机制回收。

C#7.0引入了一种叫ValueTuple的新的类型,它是一个结构体,因此能够获得比元组更好的性能。

C#
 //值元组
 var myValueTuple = (id:1,comments:"周一,坏",Ask:"123456");

 await Console.Out.WriteLineAsync($"我真的会大叫{myValueTuple.comments},每周有多少天{myValueTuple.Ask}");

此外,由于可以给属于ValueTuple的元素命名,这使得代码非常地清晰。

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部