C#学习之旅

C#—元组

2019-03-19  本文已影响0人  你这样我很吃惊

元组 概念:

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值。

上一篇 下一篇

猜你喜欢

热点阅读