1. 程式人生 > >c# tuple還是valueTuple?

c# tuple還是valueTuple?

回聲 忽略 bubuko return 便在 簡潔 nuget 方法調用 特性

自從c#7.0發布之後,其中一個新特性是關於tuple的更新,使得tuple在編碼中更受歡迎

先總結一下tuple的常規用法

一、回味Tuple

Tuple的美式發音為 /?tj?p?l; ?t?p?l (方便在討論的時候準確發音,我是鬧過笑話)

Tuple是C# 4.0時出的一個新特性,因此.Net Framework 4.0以上版本可用。

1、創建Tuple

有兩種方式可以創建tuple元祖對象,如下所示

           //1.使用tuple的靜態方法創建tuple
            {
                //最多支持9個元素
                             var tuple = Tuple.Create<int, int, int, int>(1,2,3,4);

            }
            //2.使用構造函數構造tuple
            {
                var tuple = new Tuple<int>(1);
                          }

2、使用tuple

       static void Main(string[] args)
        {
            //1.使用tuple存入相關信息,替代model對象,標識一組信息
            {
                var tuple = new Tuple<int, string, string>(1, "張山", "1班");
            }
            //2.作為方法的返回值
            {
                var tuple = GetTuple();
            }
        }

        static Tuple<int, int> GetTuple()
        {
            Tuple<int, int> tuple = new Tuple<int, int>(1, 2);
            return tuple;
        }

3、tuple取值

         static void Main(string[] args)
          {
            //1.使用tuple存入相關信息,替代model對象,標識一組信息
            {
                var tuple = new Tuple<int, string, string>(1, "張山", "1班");
                int id = tuple.Item1;
                string name = tuple.Item2;
            }
            //2.作為方法的返回值
            {
                var tuple = GetTuple();
                var id = tuple.Item1;
            }
           }

        static Tuple<int, int> GetTuple()
        {
            Tuple<int, int> tuple = new Tuple<int, int>(1, 2);
            return tuple;
        }

以上就是tuple使用三部曲

下面在看下c#7.0關於tuple的新特性

二、ValueTuple

1、先從nuget包中下載

技術分享圖片

2、.使用新特性

     static void Main(string[] args)
        {
            //1.新特性使用
            {
                var valueTuple = GetValueTuple();
                int id = valueTuple.id;
                string name = valueTuple.name;
                string className = valueTuple.className;

                //可以對返回參數進行解構,解析成更明確的表達
                var (id1,name1,className1)= GetValueTuple();
                int id2 = id1;

                //忽略自己不必使用的值
                var (id3, _, _) = GetValueTuple();

            }

            //2.常規tuple使用
            {
                var tuple = GetTuple();
                int id = tuple.Item1;
                string name = tuple.Item2;
                string className = tuple.Item3;
            }
           
        }

        static (int id, string name, string className) GetValueTuple()
        {

            return (1, "張三", "一班");
        }

        static Tuple<int, string, string> GetTuple()
        {
            Tuple<int, string, string> tuple = new Tuple<int, string, string>(1, "張三", "一班");
            return tuple;
        }

總結

1、ValueTuple的返回值寫法更簡潔,且方法返回聲明更明確,

因此方法調用方能夠明確獲取方法返回值定義的參數名

2、ValueTuple可對返回參數進行解構

升級到了 .NET Framework 4.6.2就可以使用c# 7.0的語法了,也就可以使用ValueTuple

c# tuple還是valueTuple?