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