功能:动态返回数据结构,可当临时数据结构

class Program
{static void Main(string[] args){//Beforenew People() {Name = "Terry", Age = 24};//Now,Create Dynamic structvar data = Tuple.Create("Terry", 24);}
}
public struct People
{public string Name { get; set; }public int Age { get; set; }
}

2.比较

var t1 = Tuple.Create(12.3, Double.NaN, 16.4);
var t2 = Tuple.Create(12.3, Double.NaN, 16.4);

以上两个对象参数相同
(1)调用默认的Equals方法

// Call default Equals method.
Console.WriteLine(t1.Equals(t2));

结果输出为True

(2)使用IStructuralEquatable,这个接口为新增,需要一个实现IEqualityComparer对象

IStructuralEquatable equ = t1;
// Call IStructuralEquatable.Equals using default comparer.
Console.WriteLine(equ.Equals(t2, EqualityComparer<object>.Default));

实质上上面调的都是同一个方法,内部还是调用的默认Equals方法比较
看一个内部tuple的Equals实现

bool IStructuralEquatable.Equals(object other, IEqualityComparer comparer)
{if (other == null){return false;}Tuple<T1, T2, T3> tuple = other as Tuple<T1, T2, T3>;if (tuple == null){return false;}return ((comparer.Equals(this.m_Item1, tuple.m_Item1) && comparer.Equals(this.m_Item2, tuple.m_Item2)) && comparer.Equals(this.m_Item3, tuple.m_Item3));
}

(3)传引用类型,输出为false

var t1 = Tuple.Create(12.3, Double.NaN, new People(){Age = 1});
var t2 = Tuple.Create(12.3, Double.NaN, new People() { Age = 1 });// Call default Equals method.
Console.WriteLine(t1.Equals(t2));

来看看有几个tuple…好多…如果真有这么多参数,也是应该定义一个类型了

参考:http://kb.cnblogs.com/page/47206/

转载于:https://www.cnblogs.com/Clingingboy/archive/2010/06/09/1754910.html

.net 4.0新特性-tuple相关推荐

  1. 浅谈Tuple之C#4.0新特性

    一.4.0新特性中的Tuple 大家可以回顾一下c#4.0中增加的一个新特性,元组Tuple,它是一种固定成员的泛型集合: 下面先看看官方的一个使用例子: 创建一个包含7个元素的Tuple数组 // ...

  2. C#6.0,C#7.0新特性

    C#6.0,C#7.0新特性 C#6.0新特性 Auto-Property enhancements(自动属性增强) Read-only auto-properties (真正的只读属性) Auto- ...

  3. C# 7.0 新特性3: 模式匹配

    本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的"多"返回值方法 2. C# 7.0 新特性2: 本 ...

  4. 侯捷C++八部曲笔记(四、C++2.0新特性)

    侯捷C++八部曲笔记(四.C++2.0新特性) 关键字 noexcept override final decltype =default, =delete nullptr auto explicit ...

  5. 背水一战 Windows 10 (43) - C# 7.0 新特性

    背水一战 Windows 10 (43) - C# 7.0 新特性 原文: 背水一战 Windows 10 (43) - C# 7.0 新特性 [源码下载] 背水一战 Windows 10 (43) ...

  6. JDK5.0新特性系列---目录

    JDK5.0新特性系列---目录 JDK5.0新特性系列---1.自动装箱和拆箱 JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列--- ...

  7. [转]C# 2.0新特性与C# 3.5新特性

    C# 2.0新特性与C# 3.5新特性 一.C# 2.0 新特性: 1.泛型List<MyObject> obj_list=new List(); obj_list.Add(new MyO ...

  8. Servlet 3.0 新特性概述

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  9. Redis 6.0 新特性-多线程连环13问!

    来自:码大叔 导读:支持多线程的Redis6.0版本于2020-05-02终于发布了,为什么Redis忽然要支持多线程?如何开启多线程?开启后性能提升效果如何?线程数量该如何设置?开启多线程后会不会有 ...

最新文章

  1. html语言中 加当前时间,javascript中怎么获取当前时间?
  2. Spring实战之三:高级装配
  3. his系统oracle多少钱,医院信息系统怎样为医改调价做准备:HIS费用功能应用情况调查告诉您...
  4. youcans 的 OpenCV 学习课—6.灰度变换与直方图处理
  5. 给ListView视图添加行号
  6. Go基础:数组、切片与指针
  7. windows mysql 和linux mysql解决乱码问题
  8. 微信公众号迁移流程 《openid转换》
  9. Windows系統修改MAC地址的方法
  10. linux系统scsi硬盘,Linux系统中SCSI硬盘的热拔插
  11. Python AutoCAD 修改
  12. 高精度反正切函数的实现
  13. 叠氮-二乙二醇-羟基Azido-PEG2-alcohol139115-90-5
  14. 为用户提供确定性——互联网平台建设
  15. 改变tiff图片像素大小
  16. 万字详文告诉你如何做 Code Review!
  17. 苹果手机还原网络设置会怎样_苹果手机老是信号不好,只要掌握这4个小技巧,信号便能立马增强...
  18. 计算机专硕_2021年北京科技大学计算机专硕考研初复试考研经验分享、择校备考分析指导...
  19. 栈应用 括弧匹配问题 题解(C++)
  20. iOS开发者遇到审核失败的原因及解决办法

热门文章

  1. python实用黑客脚本_Python黑客攻防(十六)编写Dos脚本,进行容易攻击演示
  2. java sybase存储过程_sybase存储过程-----不定时更新
  3. 数据库主键从某个值开始自增
  4. nginx php重定向,Thinkphp linux nginx重定向配置
  5. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
  6. java读取日志_Java实时监控日志文件并输出的方法详解
  7. python怎么抓取网页倒计时_python实现的简单窗口倒计时界面实例
  8. 对10亿个数据去重java_JAVA 8 新特性
  9. mysql登录报错error1045,mysql创建登录报错ERROR1045(28000)
  10. python中numpy的用法_Python中numpy多维数组的用法