• .Net 之Tuple 类


    Tuple是什么

    按照Msdn 上说:提供用于创造元组对象的静态方法。从字面意思并不能理解他的作用;

    Tuple 是个静态类,提供8个静态泛型方法;T 可以是值类型,也可是引用类型;

    image

    使用场景

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

  • 相关阅读:
    CentOS7.4 chrony时间同步服务器部署(替代NTPD)
    Zabbix Agent for Windows部署(五)
    Zabbix3.4.5部署安装(二)
    Zabbix概术及基础介绍(一)
    修改zabbix为中文,并解决乱码问题(三)
    ZABBIX 3.4 监控Nginx 状态(七)
    PXE+Kickstart 全自动安装部署CentOS7.4
    Zabbix Agent for Linux部署(四)
    不能在 DropDownList 中选择多个项 原因分析及解决方法
    IE浏览器下的CSS问题
  • 原文地址:https://www.cnblogs.com/DripRoad/p/5537661.html
Copyright © 2020-2023  润新知