元组

数组合并了相同类型的对象,而元组合并了不同类型的对象.

.NET 4定义了8个泛型Tuple类和一个静态的Tuple类,他们用作元组的工厂.

元组是一种数据结构,通过逗号分隔

Tuple<T1,T2,T3...>最多能到7,也可以通过嵌套的元组中的对象创建八个或多个元素的元组在Rest属性中的Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> 对象。

案例:

//一个元素的元组

Tuple<int> test = new Tuple<int>(34);

//两个元素的元组

Tuple<string, int> test2 = new Tuple<string, int>("zhangsan",23);

//多个元素的元组

Tuple<int, int, Tuple<int, int>> test_i_i_Tii = new Tuple<int, int, Tuple<int, int>>(1, 1, new Tuple<int, int>(2, 3));

Console.WriteLine(test.Item1);

Console.WriteLine(" {0}  :  {1}",test2.Item1,test2.Item2);

Console.ReadKey();

多个返回值问题

一般shiyongout关键字,使用元组也可以实现,案例:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace 元组

{

class Program

{

static void Main(string[] args)

{

string outparam = "";

//使用out关键字得到多个返回值

int returnvalue = OutTest(out outparam);

Console.WriteLine(outparam);

//使用Tuple得到多个关键字

Tuple<string, int> test = TupleTest();

Console.WriteLine("{0},{1}", test.Item1, test.Item2); ;

Console.ReadKey();

}

/// <summary>

/// 实现返回两个值

/// </summary>

/// <param name="test"></param>

/// <returns></returns>

public static int OutTest(out string test)

{

test="hahaha";

return 10;

}

/// <summary>

/// 使用元组实现返回两个值

/// </summary>

/// <returns></returns>

public static Tuple<string, int> TupleTest()

{

return new Tuple<string, int>("zhangsan",10);

}

}

}

当然使用创建的帮助器方法的同一元组对象更为简单:

var test = Tuple.Create("zhangsan",19);            Console.WriteLine("{0},{1}",test.Item1,test.Item2);

元组通常有四种不同的使用方式:

1.表示一组数据.例如,元组可以表示一条数据库记录,并且其组建可以保湿记录的各个字段.

2.提供对数据集的轻松访问和操作

3.在不使用out参数(在C#中)或ByRef参数(在VB)的情况下,从方法汇总返回多个值

4.通过单个参数将多个值传递给一个方法.案例:

static void Main(string[] args)

{

Tuple<string,int,char> t=new Tuple<string,int,char>("zhangsan",19,'M')

int res = Test(t);

}

public static int Test(Tuple<string,int ,char> t)

{

return 0;

}

C#编程(三十六)----------元组的更多相关文章

  1. 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索

    第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...

  2. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  3. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  4. 剑指Offer(三十六):两个链表的第一个公共结点

    剑指Offer(三十六):两个链表的第一个公共结点 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  5. NeHe OpenGL教程 第三十六课:从渲染到纹理

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  7. 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础

    第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...

  8. “全栈2019”Java第三十六章:类

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 微信小程序把玩(三十六)Storage API

    原文:微信小程序把玩(三十六)Storage API 其实这个存储在新建Demo的时候就已经用到了就是存储就是那个logs日志,数据存储主要分为同步和异步 异步存储方法: 存数据 wx.setStor ...

  10. 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)

    风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...

随机推荐

  1. 2018-11-3& maven

    https://www.cnblogs.com/clsn/p/7944116.html#auto_id_10 http://www.runoob.com/maven/maven-creating-pr ...

  2. python2脚本批量转成python3

    #查看 模块的安装路径 import tools print (tools.__file__) #进入cmd,然后python 2to3.py -w 需要批量转换的文件所在的路径#参考:http:// ...

  3. python try详细说明(python的异常捕捉模块)

    #自己常用 try: pass except Exception as e: print("break for :"+str(e)) # 划重点: 1. 正常执行try情况 pri ...

  4. 关于sudo 权限被修改的解决方法

    在用sudo安装文件的时候,出现如下错误提示: sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, q ...

  5. apollo配置相关

    一.运维 1. 数据库ConfigDB,PortalDB 2. 基础服务 :Config-Service,(Meta-Server),Admin-Service,Portal 3. 应用在SIT.UA ...

  6. SOA 解惑

    SOA 解惑 SOA 不是一种技术,它是一种设计方法.最近一段时间我碰到了很多关于 SOA 的具有误导性的文章.尤其是,有些人混淆了 SOA 和诸如 BPM.ESB 以及复合事件处理 (CEP) 之类 ...

  7. Connect to DB2 database in eclipse via jdbc

    https://stackoverflow.com/questions/23801841/connect-to-db2-database-in-eclipse-via-jdbc

  8. ps不显示命令本身的进程号

    当我们查看某个服务的进程时候,它会把命令本身的进程显示出来.如下图: 进程号2383 就是我命令本身的进程号,和我实际想看的进程无关 特别是在我们写脚本,kill进程时候会报错: 解决办法可以优化脚本 ...

  9. window下的窗口事件-js

    window.onfocus = function(){ // 窗口获取焦点事件}; window.onblur= function(){ // 窗口失去焦点事件};有弊端,亲测. 所以我还有一个更好 ...

  10. MapReduce原理2

    MapReduce的shuffle机制 1.概述 mapreduce中,map阶段处理的数据如何传递给reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle: shu ...