zoukankan      html  css  js  c++  java
  • Tuple

    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比较实用。所以自己动手写了一个,才发现其实这个还是比较简单的。

     1  #region 自定义数据结构体 一般用于数据返回处理
     2     public class TupleBase<T>
     3     {
     4         private readonly T item1 = default(T);
     5         public T Item1
     6         {
     7             get { return item1; }
     8         }
     9         public TupleBase(T t)
    10         {
    11             item1 = t;
    12         }
    13     }
    14 
    15 
    16     public class TupleBase<T1, T2> : Tuple<T1>
    17     {
    18         private readonly T2 item2 = default(T2);
    19         public T2 Item2
    20         {
    21             get { return item2; }
    22         }
    23         public TupleBase(T1 t1, T2 t2)
    24             : base(t1)
    25         {
    26             this.item2 = t2;
    27         }
    28     }
    29     public class TupleBase<T1, T2, T3> : TupleBase<T1, T2>
    30     {
    31         private readonly T3 item3 = default(T3);
    32         public T3 Item3
    33         {
    34             get { return item3; }
    35         }
    36         public TupleBase(T1 t1, T2 t2, T3 t3)
    37             : base(t1, t2)
    38         {
    39             this.item3 = t3;
    40         }
    41     }
    42 
    43     public class TupleBase<T1, T2, T3, T4> : TupleBase<T1, T2, T3>
    44     {
    45         private readonly T4 item4 = default(T4);
    46         public T4 Item4
    47         {
    48             get { return item4; }
    49         }
    50         public TupleBase(T1 t1, T2 t2, T3 t3, T4 t4)
    51             : base(t1, t2, t3)
    52         {
    53             this.item4 = t4;
    54         }
    55     }
    56     public class TupleBase<T1, T2, T3, T4, T5> : TupleBase<T1, T2, T3, T4>
    57     {
    58         private readonly T5 item5 = default(T5);
    59         public T5 Item5
    60         {
    61             get { return item5; }
    62         }
    63         public TupleBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
    64             : base(t1, t2, t3, t4)
    65         {
    66             this.item5 = t5;
    67         }
    68     }
    69     #endregion

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

    Top
    收藏
    关注
    评论
  • 相关阅读:
    [CF1355] Codeforces Round #643 (Div. 2)
    [ABC189] AtCoder Beginner Contest 189
    P3702 [SDOI2017]序列计数 (三模数NTT)
    P3321 [SDOI2015]序列统计 (NTT快速幂)
    洛谷P4157 [SCOI2006]整数划分
    洛谷P2553 [AHOI2001]多项式乘法
    洛谷P1919 (模板)A*B Problem升级版(FFT快速傅里叶)
    MySQL学习总结-详细版(包括下载安装)
    查看oracle数据库中表是否被锁
    SQL优化(面试题)
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4345849.html
Copyright © 2011-2022 走看看