C#中Tuple的使用
鉴于MSDN上面的机器翻译实在太烂,还是自己翻译吧,虽然麻烦了点(-_-)。
定义:元组是具有 特定数量和序列 的元素 的数据结构 (注意断句哈!)
元组通常有四种使用方式︰
一、表示一组数据
例如,一个元组可以表示一条数据库记录,并且每一个分量对应表示这条记录的每个字段便于对数据集进行访问和操作,例如下面这个例子(数据集市每个学生和他的分数,最后求出所有成绩的学生的平均分数):
二、便于对数据集进行访问和操作
例如下面这个例子(数据集市每个学生和他的分数,最后求出所有成绩的学生的平均分数):
using System;
public class Example
{
public static void Main()
{
Tuple<string, Nullable<int>>[] scores =
{ new Tuple<string, Nullable<int>>("Jack", 78),
new Tuple<string, Nullable<int>>("Abbey", 92),
new Tuple<string, Nullable<int>>("Dave", 88),
new Tuple<string, Nullable<int>>("Sam", 91),
new Tuple<string, Nullable<int>>("Ed", null),
new Tuple<string, Nullable<int>>("Penelope", 82),
new Tuple<string, Nullable<int>>("Linda", 99),
new Tuple<string, Nullable<int>>("Judith", 84) };
int number;
double mean = ComputeMean(scores, out number);
Console.WriteLine("Average test score: {0:N2} (n={1})", mean, number);
}
private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n)
{
n = 0;
int sum = 0;
foreach (var score in scores)
{
if (score.Item2.HasValue)
{
n += 1;
sum += score.Item2.Value;
}
}
if (n > 0)
return sum / (double) n;
else
return 0;
}
}
// The example displays the following output:
// Average test score: 88 (n=7)
三、一个方法有多个返回值无需使用out参数(事实上我就是用的这种方式)
贴一段我的代码
public Tuple<int, string> ManEntryPN(DateTime recTime, double netLossRate, double electricityOnline, double electricitySell)
{
//检验查询
Tuple<int, string> tuple = null;
string testProc = "queryManagePageData";
SqlParameter[] testParas = new SqlParameter[] {
new SqlParameter("@recTime",recTime),
new SqlParameter("@netLossRate",netLossRate),
new SqlParameter("@electricityOnline",electricityOnline),
new SqlParameter("@electricitySell",electricitySell),
new SqlParameter("@indexName","TestManEntryPN")
};
DataTable dt = new DataTable();
dt = sqlhelper.ExecuteQuery(testProc, testParas, CommandType.StoredProcedure);
if (dt.Rows.Count > 0)
{
//如果该日期数据已经录入
return tuple = new Tuple<int, string>(1, recTime + "数据已经录入");
}
//数据录入
string insertProc = "queryManagePageData";
SqlParameter[] insertParas = new SqlParameter[] {
new SqlParameter("@recTime",recTime),
new SqlParameter("@netLossRate",netLossRate),
new SqlParameter("@electricityOnline",electricityOnline),
new SqlParameter("@electricitySell",electricitySell),
new SqlParameter("@indexName","ManEntryPN")
};
int res = sqlhelper.ExecuteNonQuery(insertProc, insertParas, CommandType.StoredProcedure);
if (res > 0)
{
//如果录入成功
return tuple = new Tuple<int, string>(0, "Sucess");
}
return tuple = new Tuple<int, string>(1, "插入失败");
}
四、将多个值传给单个参数的方法
例如,Thread.Start(Object) 方法只有一个参数,即你可以传一个值给该线程的启动方法。
如果你提供Tuple<T1, T2, T3> 对象作为方法参数,则你可以给该线程的启动方法传3个值。
C#中Tuple的使用的更多相关文章
- Storm中tuple的可靠性
一.简介 Storm 可以保证 spout 发出的每条消息都能被“完全处理” ,这也是直接区别于其他实时系统的地方,如 S4. 请注意,spout 发出的消息后续可能会触发产生成千上万条消息 ,可以形 ...
- Python中tuple的功能介绍
Tuple的功能介绍 1. 元祖的两种方法 1. 元祖的内置方法 两个元祖的相加 格式:x.__add__(y)等同于x+y 例如:tu1 = (1,2,3,) print(tu1.__add__(( ...
- python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器
1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 == 比较的是两个对象的内容是否相等 2. with语句时用于对try except finally 的优 ...
- Postgres中tuple的组装与插入
1.相关的数据类型 我们先看相关的数据类型: HeapTupleData(src/include/access/htup.h) typedef struct HeapTupleData { uint3 ...
- scala中Tuple简单使用
/** * Tuple简单使用记录 * 最大22个参数 */ object TupleUse { def main(args: Array[String]): Unit = { // 简单Tuple ...
- 浅谈C#中Tuple和Func的使用
为什么将Tuple和Func混合起来谈呢? 首先,介绍一下:Tuple叫做元组,是.Net Framwork4.0引入的数据类型,用来返回多个数值.在C# 4.0之前我们函数有多个返回值,通常是使用r ...
- C++中tuple类型
tuple是C++11新标准里的类型.它是一个类似pair类型的模板.pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员.但是每个确 ...
- VS2010环境下.NET4.0中Tuple<T>的一个小BUG问题
启动一个桌面程序后,发现一个窗体cfdata=null, 执行时发生错误, 但是在初始化的时候,我明明是cfdata=new Cfdata();为什么会出现这个错误呢. 我开始跟踪,发现当执行cfda ...
- [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二
发布日期:2009.06.01 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. Tuple,是函数式编程的概念之一,早见于Elang.F#等动态 ...
随机推荐
- 发现 TSplitter 在嵌套时不好用, 索性写了个替代品(处理MouseDown,MouseMove,MouseUp,然后设定控件的Left值就可以了)
代替 TSplitter 的 TDirPanel 类: unit DirPanel; interface uses Classes, Controls, Forms, ExtCtrls; type ...
- 《C++ Primer》读书笔记 第二章
1.在算数表达式中最好不要使用char或bool,只有在存放字符或布尔值时才使用他们,因为char在有些机器上是有符号的,在一些机器上是无符号的,所以特别容易出问题,如果只表示一个不大的整数,那么明确 ...
- 【Java源码】集合类-JDK1.8 哈希表-红黑树-HashMap总结
JDK 1.8 HashMap是数组+链表+红黑树实现的,在阅读HashMap的源码之前先来回顾一下大学课本数据结构中的哈希表和红黑树. 什么是哈希表? 在存储结构中,关键值key通过一种关系f和唯一 ...
- python trojan development 2nd —— use python to send mail and listen to the key board then combine them
请勿用于非法用途!!!!!本人概不负责!!!原创作品,转载说明出处!!!!! from pynput.keyboard import Key,Listener import logging impor ...
- SQL Server 2012链接服务器
第一步,在服务器对象,链接服务器那里新建链接服务器:输入要链接服务器的IP地址. 第二步,安全性输入连接数据的用户名和密码. 第三步,验证是不可以打开链接服务器库的表名,视图等数据. 第四步,如果要查 ...
- jsp路径兼容
jsp头 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&q ...
- PowerDesigner16.5 有用地址
http://blog.csdn.net/keenweiwei/article/details/32720427
- 给VS设置代码创建人的宏
Sub AddFunComment() Dim DocSel As EnvDTE.TextSelection DocSel = DTE.ActiveDocument.Selection DocSel. ...
- 使用NLog记录业务日志到数据库
项目中很多时候要记录业务日志,其实是可以直接用日志框架计入数据库的. 使用NLog并不是只能将日志主体插入数据库,而是可以根据实际情况自定义任意列记入.非常方便.而且很容易实现 下面是用NLog记录业 ...
- 并发编程-concurrent指南-ConcurrentMap
ConcurrentMap 是个接口,你想要使用它的话就得使用它的实现类之一. ConcurrentMap,它是一个接口,是一个能够支持并发访问的java.util.map集合: 在原有java.ut ...