C#元组 Pair Triplet Tuple
来源:互联网 发布:网络机房用什么灭火器 编辑:程序博客网 时间:2024/06/06 07:23
C#默认提供了Pair、Triplet 、Tuple(4.0新增加的)这三个元组,在一些小的数据结构使用时,我们可以不用去声明相应的数据结构,而用这些元组来替代。
public sealed class Pair{ // Fields public object First; public object Second; // Methods public Pair() { } public Pair(object x, object y) { this.First = x; this.Second = y; }}
[Serializable]public sealed class Triplet{ // Fields public object First; public object Second; public object Third; // Methods public Triplet() { } public Triplet(object x, object y) { this.First = x; this.Second = y; } public Triplet(object x, object y, object z) { this.First = x; this.Second = y; this.Third = z; }}
以上这2个东东是表示2个、3个属性的可序列化对象。但是大家一定要注意它们的属性都是object,命名空间是System.Web.UI也就是说它们在System.Web.dll。
在。net4.0中 C#新增了Tuple 可以表示1-8个强类型属性的对象,在mscorlib.dll的System命名空间下
public static class Tuple{ // Methods internal static int CombineHashCodes(int h1, int h2) { return (((h1 << 5) + h1) ^ h2); } internal static int CombineHashCodes(int h1, int h2, int h3) { return CombineHashCodes(CombineHashCodes(h1, h2), h3); } internal static int CombineHashCodes(int h1, int h2, int h3, int h4) { return CombineHashCodes(CombineHashCodes(h1, h2), CombineHashCodes(h3, h4)); } internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5) { return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), h5); } internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6) { return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6)); } internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6, int h7) { return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6, h7)); } internal static int CombineHashCodes(int h1, int h2, int h3, int h4, int h5, int h6, int h7, int h8) { return CombineHashCodes(CombineHashCodes(h1, h2, h3, h4), CombineHashCodes(h5, h6, h7, h8)); } public static Tuple<T1> Create<T1>(T1 item1) { return new Tuple<T1>(item1); } public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2) { return new Tuple<T1, T2>(item1, item2); } public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3) { return new Tuple<T1, T2, T3>(item1, item2, item3); } public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>(T1 item1, T2 item2, T3 item3, T4 item4) { return new Tuple<T1, T2, T3, T4>(item1, item2, item3, item4); } public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5) { return new Tuple<T1, T2, T3, T4, T5>(item1, item2, item3, item4, item5); } public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6) { return new Tuple<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, item6); } public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7) { return new Tuple<T1, T2, T3, T4, T5, T6, T7>(item1, item2, item3, item4, item5, item6, item7); } public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> Create<T1, T2, T3, T4, T5, T6, T7, T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8) { return new Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>(item1, item2, item3, item4, item5, item6, item7, new Tuple<T8>(item8)); }}
其中的Tuple<...>都有[Serializable]属性表示可序列化。可见Tuple只是一个简单的工厂,使用它可以创建Tuple<...>类型的对象了。
至于使用我就不多说了,个人还是建议大家用Tuple而不要使用Pair 和Triplet
- C#元组 Pair Triplet Tuple
- C# 组元Tuple
- C# 组元Tuple
- C#的元组Tuple类型
- C#4.0中的元组对象Tuple
- pair&tuple
- 元组 tuple
- 元组(Tuple)
- Tuple 元组
- 元组Tuple浅析
- Swift-元组tuple
- java Tuple 元组
- Swift - Tuple(元组)
- Python元组tuple
- python 元组(tuple)
- Swift-元组(Tuple)
- Swift: Tuple 元组
- tuple 元组
- 如何远程重启服务器
- css float 清除浮动 haslayout
- 人的爱情观由爱情价值观、爱情道德观和性心理组成
- 查询并增大表空间Tablespace
- Ubuntu 编译程序出现/usr/bin/ld……Is a directory解决方法
- C#元组 Pair Triplet Tuple
- jar bat dos窗口 隐藏
- Base64编码算法实现-2
- maven依赖关系中Scope的作用
- Flex PopUpManager
- 闭包相关(Closures)——from MDN
- Base64编码实现-3
- 常见排序算法的实现
- iOS/iPhoneOS Equalizer with libsox - making it a .framework