C#语法新特性之元组实例详解
作者:jovenlee 发布时间:2022-09-20 03:05:53
标签:c#,语法新特征,元组
1.元组(Tuple)
元组(Tuple)在4.0 的时候就有了,但元组也有些缺点,如:
1)Tuple 会影响代码的可读性,因为它的属性名都是:Item1,Item2.. 。
2)Tuple 还不够轻量级,因为它是引用类型(Class),对于一个变量要使用一个类型,有点太没必要了。
源代码如下:
// 摘要:
// 提供用于创造元组对象的静态方法。若要浏览此类型的.NET Framework 源代码,请参阅 Reference Source。
public static class Tuple
{
// 返回结果:
// 一个元组,其值 (item1)。
public static Tuple<T1> Create<T1>(T1 item1);
// 返回结果:
// 一个 2 元组,其值 (item1, ,item2)。
public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2);
}
提供用于创造元组对象的静态方法
备注:上述所指 Tuple 还不够轻量级,是从某种意义上来说的或者是一种假设,即假设分配操作非常的多。
C# 7 中的元组(ValueTuple)解决了上述两个缺点:
1)ValueTuple 支持语义上的字段命名,可以为每一个属性名字自定义名称.如(int first,int second) tuple=(1,2)。
2)ValueTuple 是值类型(Struct)。
注:如果vs报没有预定义类型ValueTuple<...>的错误时,需要使用nuget命令导入: Install - Package System.ValueTuple
源代码如下(ValueTuple<...>内部原理):
public struct ValueTuple<T1, T2> : IEquatable<ValueTuple<T1, T2>>, IStructuralEquatable, IStructuralComparable, IComparable, IComparable<ValueTuple<T1, T2>>, ITupleInternal
{
public T1 Item1;
public T2 Item2;
int ITupleInternal.Size
{
get
{
return 2;
}
}
public ValueTuple(T1 item1, T2 item2)
{
this.Item1 = item1;
this.Item2 = item2;
}
}
总结:元组的出现在一定程度上简化了面向对象,有些不必要或者很少使用的对象可以直接使用元组来返回,而不需要再通过类型的方式去返回
以上所述是小编给大家介绍的C#语法新特性之元组实例详解网站的支持!
来源:http://www.cnblogs.com/jovenlee/archive/2017/04/11/6689400.html


猜你喜欢
- 之前写了一个WPF的圆形环绕的Loading动画,现在写一个Winform的圆形环绕的Loading动画。1.新建Winform项目,添加一
- 一. 思路今天接到个小任务,让把json文件转换成excel文件,按照列展开.思路:既然json已经都已经是现成的,那直接将jso
- 在安卓开发中,经常会使用到一些动画,那么在开发中,如何使用这些动画呢?帧动画:不是针对View做出一些形状上的变化,而是用于播放一张张的图片
- 本文实例讲述了Android开发实现的计时器功能。分享给大家供大家参考,具体如下:效果图:布局:三个按钮 加上一个Chronometer&l
- 1、WinForm中datagridview增加行号在界面上拖一个控件dataGridView1,在datagridview添加行事件中添加
- 什么是Dozer?Dozer是一种Java Bean到Java Bean的映射器,递归地将数据从一个对象复制到另一个对象,它是一个强大的,通
- 默认格式public class MyClass implements Serializable{...}序列化:ObjectOutputS
- /** * 循环录像,当内存卡容量少于300M时,自动删除视频列表里面的第一个文件 */private void xunhuanluxian
- 最近有个同事在调用一个类库中的方法时遇到了一个问题,异常信息如下:尝试释放正在使用的RCW,活动线程或其他线程上正在使用该 RCW,释放正在
- Java基本概念JDK包含了不少Java开发相关命令。如,javac、java、javap、javaw、javadoc。虽然现在的Java开
- springboot对kafka的client很好的实现了集成,使用非常方便,本文也实现了一个在springboot中实现操作kafka的d
- protobuf 是 google的一个开源项目,可用于以下两种用途:(1)数据的存储(序列化和反序列化),类似于xml、json等;(2)
- 最近想关闭一个包的日志打印,经过一番研究实际上就一句话的事,一直没成功是因为name写错了。<logger name="pa
- 前言面向切面(AOP)Aspect Oriented Programming是一种编程范式,与语言无关,是一种程序设计思想,它也是sprin
- 前言相信有很多小伙伴,在日常的开发中都有遇到过需要调用第三方接口的需求吧,但是自己有没有写过接口提供给第三方使用呢,常规的都是我们调用别人的
- 一、循环结构循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适
- 项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET。网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文
- 如下所示:import org.apache.commons.lang.StringUtils; public class Test {
- 1.一维数组名作为函数参数传递一位数组名,就相当于该数组的首个元素的地址;int a[10];int *p;p=a;//p=a与p=&
- 一、问题描述使用百度地图实现如图所示应用,首先自动定位当前我起始位置(小圆点位置),并跟随移动不断自动定位我的当前位置百度Api不同版本使用