C# 使用Tuple传递多个参数
Tuple是基于.NET Framework 4.0 及以上版本才有的。微软称它为元组,如果有三个参数那就是三元组。如 Tuple(T1, T2, T3)
Tuple的命名空间在 System 很短吧,也就是说只要是基于.NET Framework 4.0 及以上版本的,创建项目就可以直接在Visual Studio中敲出来。
程序集: mscorlib(在 mscorlib.dll 中)
为什么要使用Tuple
来!先看看下面这个方法。
- public bool MyMethod(out string msg)
- {
- msg = "www.wxzzz.com";
- return true;
- }
这个方法很简单,意图就是返回两个参数。这个是我们经常遇见的一个情况,为了返回两个或者多个参数而使用多个out..显然使用起来挺麻烦的。
也许有朋友说使用如下类似的代码不就可以了?
- public object[] MyMethod();
- //调用
- object[] array = MyMethod();
- bool a = (int)obj[0];
- string b = (string)obj[1];
这样就会引起装箱拆箱的问题,效率就要降低许多….如果是一个复杂的对象,装箱拆箱是非常耗时的,所以泛型正是为此而生。
使用Tuple传递多个参数
Tuple提供了一共9个类,其实都是差不多的,只是参数不同。如下图所示

其实Tuple有很多重载的类,最多可以传入8个参数。官方的建议是如果大于8个参数的话,第八个参数你可以传入Tuple。就是以Tuple包含Tuple的用法啦。
下面我们来看看如何使用Tuple返回2个参数吧。
- //返回2个参数 bool 和 string
- public Tuple<bool,string> MyMethod()
- {
- return new Tuple<bool, string>(true, "www.wxzzz.com");
- }
- //使用
- Tuple<bool,string> tup = MyMethod();
- // tup.Item1 的值类型是bool类型,值是 true
- // tup.Item2 的值类型是string类型,值是"www.wxzzz.com
这样我们就避免了object装箱拆箱的问题,提高了代码的效率,而且使用起来非常方便。
C# 使用Tuple传递多个参数
C# 使用Tuple传递多个参数的更多相关文章
- 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...
- C#使用结构来传递多个参数
当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...
- 转载 C#中使用结构来传递多个参数
C#中当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } c ...
- ASP.NET- LinkButton 传递多个参数
在使用LinkButton时可能会遇到需要传递多个参数的问题,而LinkButton的用来传递参数的属性commandargument需要传递的是一个string类型的值.因而传递多个参数时需要进行一 ...
- Appium Server 传递的基本参数
Appium Server 传递的基本参数 官方列表 Appium server capabilities Capability Description Values automationName ...
- 学习pthreads,给线程传递多个参数
上篇博文中,boss线程给其他线程传递的只有一个参数,那么假如是多个参数呢?怎么传递呢?或许你会有这样的疑问,带着这个疑问,我们进入本文的世界,这里传递多个参数,采用结构体,为什么呢?因为结构体里可以 ...
- nodejs 如何获取页面get、post传递过来的参数
如果是get传递参数,可以直接使用 request.query.name 如果是post 需要借助body-parser 首先引入bodyParser = require('body-parser') ...
- Mybatis 传递多个参数
Mybatis提供了4种传递多个参数的方法: 1 Map sql语句 接口 调用方法 这个方法虽然简单易用,但是存在一个弊端:Map存储的元素是键值对,可读性不好. 2 注解 使用MyBatis的参数 ...
- 小程序动态添加class及调接口传递多个参数
1.动态添加class <view class="step2 {{indication == 2 ?'on':''}}"> <view class='tc lef ...
随机推荐
- 简化ui文件转换写法
在命令行敲一串长的命令.枯燥麻烦. #coding:utf-8 import sys import os import subprocess if len(sys.argv) == 2: #节省输入, ...
- 【app】遍历目录所有文件
遍历目录所有文件 原创,转载时请注明,谢谢.邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:htt ...
- 手机SIM卡无法识别解决方案
SIM卡是工作中测试用的,经常插拔到不同的手机,前两天SIM卡放到手机中都能正常识别,今天插入到另一款手机中发现无法识别.心里糟了,是不是卡坏了,根据之 前的直觉,在公司找了一块橡皮,在SIM卡的芯片 ...
- Swift - 动画效果的实现方法总结(附样例)
在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用 ...
- vim Diff,Easy,Read-Only 的区别
我用的是vim 7.4,在windows上面安装完 vim 之后会出现不同的vim图标,gVim ,vim gVim 是在windows下的Gui图形用户界面的的 vim (GUI Vim),支持wi ...
- 14.2.5.7 Physical Row Structure 物理数据结构:
14.2.5.7 Physical Row Structure 物理数据结构: InnoDB物理记录结构依赖行格式 在表创建的时候, 默认, InnoDB 使用Antelope 文件存储格式和它的压缩 ...
- linux 查看网络负载
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 前面的 netstat -n是netstat的命令,windo ...
- 同一个页面里的JS怎样获取jsp从别的页面获取的参数
<html><from name="from1"><input=hidden name="myhidden" value=< ...
- AIR
There is a meaning for wings that cannot fly,it's a previous memory of when you once flew through th ...
- boost 的函数式编程库 Phoenix入门学习
这篇文章是我学习boost phoenix的总结. 序言 Phoenix是一个C++的函数式编程(function programming)库.Phoenix的函数式编程是构建在函数对象上的.因此,了 ...