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类介绍

最新文章

  1. 安装dubbo管理中心
  2. NSString使用stringWithFormat拼接的相关知识
  3. 使用input range滑块,控制元素transform rotate旋转样式
  4. hiho一下120周 后缀数组一&#183;重复旋律
  5. 重构第10天:提取方法(Extract Method)
  6. sencha动态向容器里添加控件出现重叠问题
  7. Jquery 中toggle的用法举例
  8. (Problem 46)Goldbach&#39;s other conjecture
  9. 玩下Javascript
  10. Unity 相机的聚焦功能
  11. linuxDNS
  12. 目标检测(一) R-CNN
  13. HTML5入门教程:响应式页面布局
  14. SQL Server 商业智能
  15. 20145322 Exp5 MS08_067漏洞测试
  16. javascript数组操作(创建、元素删除、数组的拷贝)
  17. 设置VS2010和IE8 调试ATL控件&lt;转&gt;
  18. js 实现分享功能
  19. [转载] iOS应用程序的生命周期
  20. [洛谷P3332][ZJOI2013]K大数查询

热门文章

  1. showModalDialog改进版,包括Chrome下的特殊处理
  2. CentOS防火墙iptables-config的相关配置参数详解
  3. 【P2158】仪仗队&amp;欧拉函数详解
  4. webview 最简单的demo
  5. spring mvc 官方下载
  6. xenapi-add-support-for-vgpu
  7. Overlay网络与物理网络的关系
  8. 第一个Python程序hello.py提示出现File &quot;&lt;stdin&gt;&quot;,line 1错误
  9. hdu 1846 Brave Game(bash)
  10. MySQL 分区知识点(一 )