在学习C#的过程中,发现C#7.0支持了一个新的类System.Tuple
在学习的过程中整理了一些笔记给大家分享。
首先是System.ValueTuple
元组类型是值类型;元组元素是公共字段。 这使得元组为可变的值类型。
可以使用任意数量的元素定义元组:
它的声明使用方法
(IPAddress, int) tuple1;
(IPAddress, int) tuple2 = (IPAddress.Parse("255.255.255.255"), 8194);
public void _ValueTuple()
{
tuple1 = (IPAddress.Parse("192.168.0.1"), 8194);
tuple1 = tuple2;
Console.WriteLine(tuple1.ToString());
Console.WriteLine(tuple2.Item2);
}
输出如下
14:44:48:245 [DOTNET] (255.255.255.255, 8194)
14:44:48:276 [DOTNET] 8194
然后是System.Tuple
元组是具有特定数量和元素序列的数据结构。
可以通过在 对象的 属性中 Rest 嵌套元组对象来创建包含八个或更多元素的元组 Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 。
Tuple<string, int> tuple3 = new Tuple<string, int>("1",1);
public void _Tuple()
{
var tuple4 = Tuple.Create("1",2);
Console.WriteLine(tuple3.Item1);
Console.WriteLine(tuple4.ToString());
}
输出如下
14:50:43:717 [DOTNET] 1
14:50:43:718 [DOTNET] (1, 2)
以下是msdn总结的区别:
System.ValueTuple
类型是值类型。System.Tuple
类型是引用类型。System.ValueTuple
类型是可变的。System.Tuple
类型是不可变的。System.ValueTuple
类型的数据成员是字段。System.Tuple
类型的数据成员是属性。
我个人觉得最大的区别是一个是值类型,一个是引用类型 ,System.ValueTuple的值是可以变化的,而System.Tuple的值是只读的,初始化声明后就不可变了,System.ValueTuple可以有任意数量的元素,而System.Tuple只能有8个元素,最后一个元素只能做嵌套使用,比较麻烦。他们共同点是下标都是1开始的。
以上是我学习的笔记 如有错误请大佬们包容指正。
参考资料: