C#关键字扫盲——Tuple(元组类) 、ValueTuple(值元组)
原文: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(值元组)的更多相关文章
- 详解C# Tuple VS ValueTuple(元组类 VS 值元组)
C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化,并且网上也有大量的介绍,这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Val ...
- Tuple元组 、 ValueTuple 值元组详解
Tuple元组 Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用. 元组是一种数据结构,具有特定数量和元素序列,与数组不同,元祖中的元素可以不同的数据类型.比如设 ...
- C# 元组和值元组
C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化:ValueTuple.这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Valu ...
- [译]C# 7系列,Part 1: Value Tuples 值元组
Mark Zhou写了很不错的一系列介绍C# 7的文章,虽然是2年多年前发布的,不过对于不熟悉C# 7特性的同学来说,仍然有很高的阅读价值. 原文:https://blogs.msdn.microso ...
- C# 9.0元组 (ValueTuple)详细解说
元组 (ValueTuple)类型是值类型:元组元素是公共字段,可以使用任意数量的元素定义元组.Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢 ...
- 窥探Swift之新添数据类型元组与可选值
今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些 ...
- C# 7.0 新特性1: 基于Tuple的“多”返回值方法
本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...
- S(tuple)类及可选(Optional)类型型
元组将多个值组合为单个值.元组内的值可以是任意 类型,各元素不必是相同的类型.元组在作为函数返 回值时尤其有用. 1.定义方法1 let http404Error= (404,"Not Fo ...
- static 和 final 关键字 对实例变量赋初始值的影响
static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的 ...
随机推荐
- Android中shape的使用方法总结
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http ...
- js运算符的优先级的顺序列表
优先级权重 运算符 17 ..[].new 16 () 15 ++.-- 14 !.~.+(单目).-(单目).typeof.void.delete 13 %.*./ 12 +(双目).-(双目) 1 ...
- while/until/for 循环举例2
- 分支结构case 语句语法
- windows下基于(QPC)实现的微秒级延时
1.为什么会写windows下微秒级延时 在上一篇 实现memcpy()函数及过程总结 中测试memcpy的效率中,测试时间的拷贝效率在微秒级别,需要使用微秒级时间间隔计数. windows下提供Qu ...
- tensorflow报错
libcublas.so.9.0: cannot open shared object file: No such file or directory 输入命令: sudo ldconfig/usr/ ...
- redis相关笔记(三.redis设计与实现(笔记))
redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...
- 【leetcode】974. Subarray Sums Divisible by K
题目如下: Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have ...
- shell变量,字符串,数组
一.shell变量定义: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头: 中间不能有空格,可以使用下划线: 不能使用标点符号: 不能使用bash里的关键字. 变量使用: 使用一个定义过的 ...
- 【纪中集训】2019.08.10【省选组】模拟TJ
前言 一套码农题-- T1 Description 给定一棵\(n(\in[2,10^5])\)个点的树,\(m(≤10^5)\)次询问,每次询问有两个不相同的点,要让所有点走到这两个点之一(走一条边 ...