Tuple(组元)是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者更高版本。

在以前编程中,当需要返回多个值得方法中,常常需要将这些值放置到一个结构体或者对象中进行返回,当然也有以out/ref参数进行传递的。但是总的来说并不能真正的符合编程的需要。从而引入Tuple。

Tuple的简单使用:

  private Tuple<bool, object, string> GetObject()
{
bool result=false;
object obj=null;
string message=string.Empty;
try
{
//TODO相应的操作(例如查询获取对象)给obj赋值 obj=Query();
message="查询成功";
result=true;
}
catch(Exception ex)
{
message="查询失败";//对异常进行处理,而不是返回ex.ToString()或者ex.Message
}
return new Tuple<bool, object, string>(result, obj, message);
}

  但是当程序需要转到.net 4.0之下时就不能使用Tuple了。不过觉得这个Tuple比较实用。所以自己动手写了一个,才发现其实这个还是比较简单的。

  #region 自定义数据结构体 一般用于数据返回处理
public class TupleBase<T>
{
private readonly T item1 = default(T);
public T Item1
{
get { return item1; }
}
public TupleBase(T t)
{
item1 = t;
}
} public class TupleBase<T1, T2> : Tuple<T1>
{
private readonly T2 item2 = default(T2);
public T2 Item2
{
get { return item2; }
}
public TupleBase(T1 t1, T2 t2)
: base(t1)
{
this.item2 = t2;
}
}
public class TupleBase<T1, T2, T3> : TupleBase<T1, T2>
{
private readonly T3 item3 = default(T3);
public T3 Item3
{
get { return item3; }
}
public TupleBase(T1 t1, T2 t2, T3 t3)
: base(t1, t2)
{
this.item3 = t3;
}
} public class TupleBase<T1, T2, T3, T4> : TupleBase<T1, T2, T3>
{
private readonly T4 item4 = default(T4);
public T4 Item4
{
get { return item4; }
}
public TupleBase(T1 t1, T2 t2, T3 t3, T4 t4)
: base(t1, t2, t3)
{
this.item4 = t4;
}
}
public class TupleBase<T1, T2, T3, T4, T5> : TupleBase<T1, T2, T3, T4>
{
private readonly T5 item5 = default(T5);
public T5 Item5
{
get { return item5; }
}
public TupleBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
: base(t1, t2, t3, t4)
{
this.item5 = t5;
}
}
#endregion

以上只是以对象的形式建立,当然也有的说以结构体的形式进行组装Tuple的。结构体是值类型的,而且其没有继承,我对这个还是没有太大想法。

Tuple的更多相关文章

  1. 【.NET深呼吸】元组数据(Tuple)

    各位观众,大家好,欢迎收看由火星电视台直播的<老周吹牛>节目,注意:本节目没有任何技术含量,如果您没有兴趣,请砸掉电视机. 今天说一下System命名空间下的一个数据类型——Tuple,翻 ...

  2. python之最强王者(7)——元组(tuple)

    1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...

  3. tuple放入dict中

    tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...

  4. list,tuple,dict,set常用方法

    Python中list,tuple,dict,set常用方法 collections模块提供的其它有用扩展类型 from collections import Counter from collect ...

  5. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

  6. c# 元组Tuple

    Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...

  7. Python_Day_03 list,dic,tuple方法总结

    编程语言中最长见的几种数据类型,字典,列表,等.同样在Python中也有这些数据类型,只是有些表现形式不同.同时在Python中又多了一种叫做元组(tuple)的东西. list(列表) 初始化列表 ...

  8. python-list tuple dict set

    1:删除一个列表末尾的元素 pop方法 >>> a [1, 'Jack', 2, 3, 2] >>> a.pop() >>> a [1, 'Jac ...

  9. List tuple 类型转成数组

    SKlearning大部分的输入数据都是M * N数组. 然而我们从数据库或文件读取得来的通常是Python内定的类型tuple或list 它们的优势就不说了,但是直接把list或tuple构成的二维 ...

  10. 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?

    来源:微信公众号CodeL 今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办 ...

随机推荐

  1. PHP实现队列(Queue)数据结构

    队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队).进行删除操作的端称为队头,进行插入操作的端称为队尾.队列,是按照先进先出或 ...

  2. (转载)浅析error LNK2001: unresolved external symbol "public: __thisc...

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于      编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,      编译都已通过.产生连接错误的原因非常多 ...

  3. jquery下php与ajax的互传数据(json格式)自我总结

    研究了一整天的json数据与ajax的数据传输,现在进行一个小的自我总结,仅供参考 1.关于ajax的认识 $.ajax(),是jquery下包装好的一个函数:参考地址:http://www.w3sc ...

  4. 如何用C#使用java

    如何使用C#调用Java 今天需要使用C#调用Java的包,研究了一下,大体是以下几种解决方案: 把Java包转换为DLL或者EXE后注册为com组件,之后调用. 使用web service 比如:H ...

  5. cocos2D-x 3.5 引擎解析之--引用计数(Ref),自己主动释放池(PoolManager),自己主动释放池管理器( AutoreleasePool)

    #include <CCRef.h> Ref is used for reference count manangement. If a classinherits from Ref. C ...

  6. Oracle练习

    --声明一个变量,并给它赋值 declare  v_bonus number(8); begin select id*6 into v_bonus from A where Id=5; DBMS_OU ...

  7. HDU2586 How far away ?(LCA模板题)

    题目链接:传送门 题意: 给定一棵树,求两个点之间的距离. 分析: LCA 的模板题目 ans = dis[u]+dis[v] - 2*dis[lca(u,v)]; 在线算法:详细解说 传送门 代码例 ...

  8. lucas定理解决大组合数取模

    LL MyPow(LL a, LL b) { LL ret = ; while (b) { ) ret = ret * a % MOD; a = a * a % MOD; b >>= ; ...

  9. spring.net中间IoC、DI和MVC

    轮廓 spring.net它是开源的业务层框架,功能很强大,它归结到什么都有3能:面向切面编程:IoC和DI:提供综合型的框架支持,本片博客主要说一下IoC和DI.和其提供的对MVC框架的支持. Io ...

  10. 【深入浅出jQuery】源码浅析--整体架构(转)

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...