C#—元组
元组 概念:
1.使方法 可以返回多个返回值 而不需要借助 out ref 关键字。
2.使方法 可以返回多个返回值 而不需要借助 out ref 关键字,Tuple这个泛型类,可以允许我们返回多个参数。
1.基于 .Net4.0 框架的元组-Tuple:
创建一个元组 Tuple:
1. Tuple<string> test3 = new Tuple<string>("2");
2. Tuple<string> test4 = Tuple.Create<string>("3");
3. Tuple<int, int, int, int, int, int, int, Tuple<int>> test3 = new Tuple<int, int, int, int, int, int, int, Tuple<int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int>(8));
示例1:
public static Tuple<string, string, string> GetFullName() => new Tuple<string, string, string>("first", "second", "third");
public static void OldTuple()
{
var fullName = GetFullName();
Console.WriteLine(fullName.Item1);
Console.WriteLine(fullName.Item2);
Console.WriteLine(fullName.Item3);
}
如此为一个元组 Tuple,由 fullName 接收来自GetFullName()函数所返回的值,而这个返回值为Tuple<string, string, string>类型(泛型)
上方代码 将获得到的打印数据为 “first”、“second”、“third”。
优点:此等 Tuple 可以不借助于 ref 和 out 参数从而返回出多个 多类型的数据,这些数据被保存在一个元组中方便调用
缺点:由 Tuple 返回出的数据显示方式单一 为上方所示的 以 Item1 2 3 作为Tuple中的数据下标(只能这种方式取用)
示例2:
public static Tuple<int,string,int> ReturnOldTuple()
{
int id = 6;
string name = "王";
int num = 50;
return Tuple.Create(id, name, num); //创建返回对象 Tuple
}
public static void OldTuple()
{
Tuple<int,string,int> tuple = ReturnOldTuple();
Console.WriteLine(tuple.Item1);
Console.WriteLine(tuple.Item2);
Console.WriteLine(tuple.Item3);
}
如此示例 打印获得参数为6、王、50, 可返回多个不同类型的数据。
接收方式与上例不同,此次创建了一个新的 Tuple 类型对象用来接受 ReturnOldTuple() 函数中所返回的数据。 两种方式 都可 任选其一。
2.C#新特性ValueTuple 新元组
创建一个ValueTuple:
1. ValueTuple<int> test = new ValueTuple<int>();
2. ValueTuple<int,string> test2 = ValueTuple.Create(2,"5");
3.在函数中可快速创建并返回 return(int ,string,double); 如 示例 2 中所示
示例1:
static (string First, string Second, string Third) GetFullNum() => ("first", "second", "third");
public static void NewValueTuple()
{
var fullnum = GetFullNum();
Console.WriteLine(fullnum.First);
Console.WriteLine(fullnum.Second);
Console.WriteLine(fullnum.Third);
}
如此 打印获得结果为:first、second、third。 可以看到在编写中已经去除了 Item 1 2 3 从而改为返回值中的元素名称。
示例2:
public static (int id, string name, int num) ReturnNewValueTupleTwo()
{
int id = 6;
string name = "王";
int num = 50;
return (id, name, num);
//return ValueTuple<int, string, int>(id, name, num); 方法二
//return ValueTuple.Create(id, name, num); 方法三
}
public static void NewValueTuple()
{
(int id, string name, int num) valueTupleTwo = ReturnNewValueTupleTwo(); //应该使用这种方法声明的变量接受
//var valueTupleTwo = ReturnNewValueTupleTwo(); 方法二
Console.WriteLine(valueTupleTwo.id);
Console.WriteLine(valueTupleTwo.name);
Console.WriteLine(valueTupleTwo.num);
}
如上 为第二种返回ValueTaple的方法,将获得返回值:6、王、50. 也可通过 .名称 的方式获得值。
上方案例种 通过三种方法返回ValueTuple 用两种方法接受ValueTuple值。