smile908

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

c#之Tuple简介


01

Tuple简介

是一种非常有用的数据结构,元组功能提供了简洁的语法来将多个数据元素分组成一个轻型数据结构。

下面代码示例:如何声明元组变量、对它进行初始化并访问其数据成员:

Tuple<int, string> tuple = new Tuple<int, string>(1, "hello");
int num = tuple.Item1;
string str = tuple.Item2;
Console.WriteLine(num); 
//输出 1
Console.WriteLine(str); 
//输出 hello

在C#中,根据我们声明的元素个数,我们可以通过Item1、Item2,访问器数据成员。

 

02

Tuple使用场景

Tuple比较常用的2个场景:

1、我们在编写代码中,对于需要返回多个参数的方法,我们一般会借助out 方法参数,使用Tuple可以更加直观;

2、无需单独定义类,用于方法的返回、方法参数。

 

下面是Tuple与out使用示例对比:

out示例:遍历一个int列表List,返回元素值不为0的总个数,以及元素相加的值。

int Fun1(List<int> list, out int result)
{
  
  int count = 0;
  
  result = 0;
   
 foreach (var item in list)
    {
    
    result += item;

        if(item!=0)
     
   {
            count++;
        }
    }

    return count;
}

var list = new List<int>() { 1, 0, 5, 7, 9 };
int result;
var count = Fun1(list, out result);

Tuple示例:遍历一个int列表List,返回元素值不为0的总个数,以及元素相加的值。

Tuple<int, int> Fun1(List<int> list)
{
   
 int count = 0;
  
  int result = 0;
   
 foreach (var item in list)
    {
       
 result += item;

        if (item != 0)
        
{
            count++;
        }
    }

    return new Tuple<int, int>(count, result);
}

var list = new List<int>() { 1, 0, 5, 7, 9 };
var resutl = Fun1(list);
Console.WriteLine(resutl.Item1);
Console.WriteLine(resutl.Item2);

 

03

Tuple优缺点

优点:

方便:元组可以非常方便地存储一组相关的数据,而无需创建自定义的类。

无需创建类:使用元组时,无需创建额外的类来存储一组数据。这对于只需要临时存储一些数据的情况非常有用。

灵活:元组可以包含不同类型、数量的元素,这使得它们非常灵活。

 

缺点:

不可变性:元组是不可变的,这意味着一旦创建了元组,就不能更改其内容,没有自定义类方便。

代码可读性差:元组中的元素使用默认的命名,如“Item1”、“Item2”等。使用自定义类,调用者可以通过类的属性名称,理解每个属性的用途,而元组是采用默认命名,容易让代码会变得混乱和难以理解,特别是元组元素数量较多的情况。

 

04

最后

Tuple还是要有节制性的使用,我个人比较习惯用在替换内部类的场景下,使用原则:尽量是内部方法、内部类等一些较少需要沟通的场景,尽量避免用在对外的接口。

对于元组这个语法,你喜欢吗,都用在什么场景下,欢迎留言区评论!

原文链接:

https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654097251&idx=5&sn=4c06251259e8d6b52b10751240529268&chksm=80d86b36b7afe220c7493190ee7324211b1d205d6d134a325f0fc410715de3ecf84722157d8a&scene=132&exptype=timeline_recommend_article_extendread_samebiz#wechat_redirect

posted on   smile908  阅读(105)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示