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#等动态 ...
随机推荐
- DataVeryLite和Nhibernate性能对比
电脑型号:acer 4752g 电脑配置: 代码分享: class Program { static void Main(string[] args) { Debug.Listeners.Add(ne ...
- hdu4767_Bell_矩阵快速幂+中国剩余定理
2013长春赛区网络赛的1009题 比赛的时候这道题英勇的挂掉了,原因是写错了一个系数,有时候粗心比脑残更可怕 本题是关于Bell数,关于Bell数的详情请见维基:http://en.wikipedi ...
- hadoop之hive高级操作
在输出结果较多,需要输出到文件中时,可以在hive CLI之外执行hive -e "sql" > output.txt操作 但当SQL语句太长或太多时,这种方式不是很方便,可 ...
- 解决Mac下sed命令报错的问题
在Mac上准备批量替换一些文字,使用sed命令,如下: sed -i 's/xxx/yyy/g' file 同样的命令在Linux上是可以成功运行的,注意Mac下man sed中-i参数的说明: 原来 ...
- SpringBoot(十九)_spring.profiles.active=@profiles.active@ 的使用
现在在的公司用spring.profiles.active=@profiles.active@ 当我看到这个的时候,一脸蒙蔽,这个@ 是啥意思. 这里其实是配合 maven profile进行选择不同 ...
- Web前端——JavaScript练习
Js练习 显示和隐藏,改变display属性(点击查看图片) 关键代码: e.style.display = "block"; e.style.display = "no ...
- sentinel 滑动窗口统计机制
sentinel的滑动窗口统计机制就是根据当前时间,获取对应的时间窗口,并更新该时间窗口中的各项统计指标(pass/block/rt等),这些指标被用来进行后续判断,比如限流.降级等:随着时间的推移, ...
- 打包成war包之后如何读取配置文件
今天工作开发中遇到一个问题:在idea运行的项目读取配置文件没有问题,打包成war包之后就会报错java.io.FileNotFoundException: class path resource 原 ...
- Django高级编程之自定义Field实现多语言
自定义数据库字段 扩展默认的models.CharField和models.TextField使之成为支持多语言的字段. 可以轻松实现复用,无需配置多余选项 from django.conf impo ...
- 使用wireshark捕获SSL/TLS包并分析
原创博客,转载请注出处! TLS运作方式如下图: