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類介紹