原文:C#关键字扫盲——Tuple(元组类) 、ValueTuple(值元组)

版权声明:本文为博主原创文章,随意转载。 https://blog.csdn.net/Michel4Liu/article/details/79750877

Tuple、ValueTuple

当方法返回值大于一个时我们有时用out或结构体或类来处理,今天介绍一个简便的多返回值方式。

ValueTuple 是 Tuple的扩展,本文只针对最新的ValueTuple 做讲解,Tuple有很多不便之处,总之过时的就让他过去吧。

Tuple ValueTuple
.Net Framework 4.0 内置 Nuget 安装System.ValueType 和 Net4.7内置
是一个类 是一个结构

项目源码地址:https://gitee.com/michel4liu/LearnCSharp.git

项目:LearnTuple

环境VS2017 .NET Core2.0


一、ValueTuple基本用法

1、接收值可用Item表示,可以识别类型.

2、接收时改别名,相当于直接声明三个变量接受对应值

3、ValueTuple可以简写

二、ValueTuple 返回值加别名 最简单明了的用法。

三、解构ValueTuple 返回值中只想要部分

不想要的参数可以用 “_” 下划线代替,下图中只接受y值

四、创建ValueTuple

五、刚看完就在真实项目中用到

六、下面链接的文章写的是编译后的ValueTuple 工作内容。貌似所有的简写都是编译器的功劳

https://www.cnblogs.com/linianhui/p/csharp7_tuple.html


注意点

1、ValueTuple最多支持8个返回值,可以在第8个上嵌套ValueTuple,但是如果系统真的需要这么多返回值是不是该考虑封装成类传递更好些。微软建议超过64字节不要用结构。

C#关键字扫盲——Tuple(元组类) 、ValueTuple(值元组)的更多相关文章

  1. 详解C# Tuple VS ValueTuple(元组类 VS 值元组)

    C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化,并且网上也有大量的介绍,这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Val ...

  2. Tuple元组 、 ValueTuple 值元组详解

    Tuple元组 Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用. 元组是一种数据结构,具有特定数量和元素序列,与数组不同,元祖中的元素可以不同的数据类型.比如设 ...

  3. C# 元组和值元组

    C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化:ValueTuple.这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Valu ...

  4. [译]C# 7系列,Part 1: Value Tuples 值元组

    Mark Zhou写了很不错的一系列介绍C# 7的文章,虽然是2年多年前发布的,不过对于不熟悉C# 7特性的同学来说,仍然有很高的阅读价值. 原文:https://blogs.msdn.microso ...

  5. C# 9.0元组 (ValueTuple)详细解说

    元组 (ValueTuple)类型是值类型:元组元素是公共字段,可以使用任意数量的元素定义元组.Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢 ...

  6. 窥探Swift之新添数据类型元组与可选值

    今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些 ...

  7. C# 7.0 新特性1: 基于Tuple的“多”返回值方法

    本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...

  8. S(tuple)类及可选(Optional)类型型

    元组将多个值组合为单个值.元组内的值可以是任意 类型,各元素不必是相同的类型.元组在作为函数返 回值时尤其有用. 1.定义方法1 let http404Error= (404,"Not Fo ...

  9. static 和 final 关键字 对实例变量赋初始值的影响

    static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的 ...

随机推荐

  1. Intellij Idea乱码解决方案都在这里了

    乱码场景 使用Intellij Idea经常遇到乱码问题,可以总结为以下几类乱码的场景. 1.工程代码乱码. 2.main方法运行,控制台乱码. 3.tomcat运行,控制台乱码. 解决方案 1.工程 ...

  2. [fw]GDT是在分段中為了相容real mode 跟 protected mode的產物

    在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table). 为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型: 在R ...

  3. Java开发中的23种设计模式详解(2)结构型

    我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我 ...

  4. “CreateRiaClientFilesTask”任务意外失败。 未能加载文件程序集“System.ComponentModel.DataAnnot...

    错误  77  “CreateRiaClientFilesTask”任务意外失败.  System.Web.HttpException (0x80004005): 未能加载文件或程序集“System. ...

  5. 用html标签+css写出旋转的正方体

    有一段时间没写代码了,刚写有点手生,无从下手,为了能快速进入状态,就写了这一个小东西,纯用标签和样式表写.下面看一下我写的. 这一段是样式表: <style> *{ margin: 0; ...

  6. send csv to es with filebeat

    ## filebeat *.csv 2019-11-30 23:27:50,111111,222222,VIEW,333333333333 filebeat filebeat.inputs:- pat ...

  7. pipeline语法之environment,dir(),deleteDir()方法,readJSON,writeJSON

    一 environment指令指定一系列键值对,这些对值将被定义为所有步骤的环境变量或阶段特定步骤 environment{…}, 大括号里面写一些键值对,也就是定义一些变量并赋值,这些变量就是环境变 ...

  8. Socket网络通信——IO、NIO、AIO介绍以及区别

    一 基本概念 Socket又称"套接字",应用程序通常通过"套接字"向网路发出请求或者应答网络请求. Socket和ServerSocket类位于java.ne ...

  9. <自动化测试>之<unittest框架使用1>

    要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单 ...

  10. H5页面前后端通信 (3种方式简单介绍)

    1.ajax:短连接 2.websocket :长连接,双向的.   node搭建的websocket服务器,推送信息给客户端浏览器 :https://www.cnblogs.com/fps2tao/ ...