.Net 之Tuple 类
Tuple是什么
按照Msdn 上说:提供用于创造元组对象的静态方法。从字面意思并不能理解他的作用;
Tuple 是个静态类,提供8个静态泛型方法;T 可以是值类型,也可是引用类型;

使用场景
C#语言中,相信大家对ref 和out。一定不陌生,就是一个函数需要返回多个值的时候,我们一般都采用Ref 或者Out ;
但是,在C# 编码最佳实践中,不建议用Ref 或者Out 来返回多个结果;这时Tuple 就派上用场了。Tuple将返回的结果打包一并返回给调用者;
这样就相当方便;
场景1
在MVC或者MVVM开发中,如果一个View 需要多个ViewModel的时候, 你就可以件ViewModel 一并打包到Tuple,然后返回给View
下面已MVC 为例, 我在这里简单设计,只是为了演示Tuple,在实际项目过程请参考最佳实际设计中。例如:
public class UserInfoViewModel
{
public string UserId{get;set;}
public string UserName{get;set;}
}
public class AddressViewModel
{
public string CityId{get;set;}
public string CityName{get;set;}
}
public calss UserController:Controller
{
public Action UserInfo()
{
var mTuple =new Tuple<UserInfoViewModel,AddressViewModel>();
// 构造UserInfoViewModel数据
// 构造AddressViewModel数据
return View(mTuple );
}
}
场景2
对于在数据导入的时候,我需要知道导入结果和导入失败结果;例如:
有下面这样一个函数:
private bool ImportData( string exlPath,out DataTable errDataTbl)
{
bool mImpResult=false;
try{
//导入操作
}
catch
{
// 记录导入错误数据行 ,将记录插入到 errDataTbl
}
return mImpResult;
}
但是如果使用 Tuple ,上面方法就改成:
private Tuple<bool,DataTable> ImportData( string exlPath)
{
var mTuple =new Tuple<bool,DataTable>();
try{
//导入数据操作
}
catch(){
/// 记录导入错误的数据
}
return mTuple ;
}
参考地址:MSDN 上Tuple类介绍
.Net 之Tuple 类的更多相关文章
- Python基础 之 tuple类-元组 和 dict类-字典
tuple 元组 一.tuple 类的基本属性 1.元组,有序:元素不可被修改,不能被增加或者删除tuple类 tu = (111,22,33,44) 一般写元组的时候,推荐在最后加入,和类方法进行区 ...
- python __builtins__ tuple类 (68)
68.'tuple', 转换为元组类型 class tuple(object) | tuple() -> empty tuple | tuple(iterable) -> tuple in ...
- 详解C# Tuple VS ValueTuple(元组类 VS 值元组)
C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化,并且网上也有大量的介绍,这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解Val ...
- 【.NET深呼吸】元组数据(Tuple)
各位观众,大家好,欢迎收看由火星电视台直播的<老周吹牛>节目,注意:本节目没有任何技术含量,如果您没有兴趣,请砸掉电视机. 今天说一下System命名空间下的一个数据类型——Tuple,翻 ...
- c# 元组Tuple
Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存放各种东西的收集箱.C# 4.0引入的一个新特性 Tuple类型与口袋 ...
- .NET Framework 4.0之Tuple(元组)
Tuple,是函数式编程的概念之一,早见于Elang.F#等动态语言.Tuple类型像一个口袋,在出门前可以把所需的任何东西一股脑地放在里面.您可以将钥匙.驾驶证.便笺簿和钢笔放在口袋里,您的口袋是存 ...
- Tuple类型
Tuple类型类似的体现了C#中的匿名类型 var person=new { Name="Eric"; Age=18: } 调用: Console.writeline( perso ...
- python_list和tuple互转
Python中,tuple和list均为内置类型, 以list作为参数将tuple类初始化,将返回tuple类型 tuple([1,2,3,4]) list->tuple 以tuple做为参数, ...
- STL其他--<tuple>用法【C11】
tuple 库 tuple 库 是能够将不同类型的对象组合起来形成一个对象.和pair 对象一样,但是可以组织多种不同类型的元素. tuple中的元素类型是在编译时期决定的.与<utility ...
随机推荐
- oracle 计算时间差
1.计算时间差(相隔星期,天数,小时,分钟,秒) SELECT TO_CHAR(date1,'MMDDYYYY:HH24:MI:SS') date1, TO_CHAR(date2,'MMDDYYYY: ...
- Struts2获取参数的几种方式
Struts2由于是一个贴心的框架,所以获取参数这种体力活,就无需再通过原生的request来getParameter了,有如下几种方式进行获取 1.Action中属性驱动,必须提供与form表单na ...
- 玲珑杯 第4次 String cut(暴力字符串)
题意:给你长度为n(<=100000)的字符串,问你任意删除一个字符后得到循环节最多的数量是多少 题解:最简单的想法就是枚举删除的字符,再kmp求循环节,但是时间复杂度为O(n*n)会超时 因此 ...
- BZOJ4654/UOJ223 [Noi2016]国王饮水记
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- hdu 5876 Sparse Graph 无权图bfs求最短路
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) P ...
- MySQL复制:主从和双主配置
对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景
- 14 Python 装饰器
装饰器 装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数.让我们从简单的开始,直到能写出实用的装饰器. def outer(some_func): def inner(): print ...
- OpenCV 2.4.9 +VS2013 开发环境配置
OpenCV 的全称是:Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac O ...
- mac外接键盘修饰键设置
command 和 control 互换,option保持不变即可,差不多可以做到类似windows快捷键的使用习惯.
- UVA 11605 Lights inside a 3d Grid
#include <iostream> #include <stdio.h> #include <cstring> #include <math.h> ...