C#中System.ValueTuple和System.Tuple的区别

在学习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开始的。

以上是我学习的笔记 如有错误请大佬们包容指正。

参考资料:

元组类型 - C# 参考 | Microsoft Learn

Tuple 类 (System) | Microsoft Learn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值