C#語法——元組類型


 元組Tuple
 

  我們現在使用的C#語法已經可以滿足日常的開發需求,但C#語法還在進行版本的更新,在創造更多更優秀的語義來讓我們使用。這里介紹一下C#5.0里的提供的語法——元組。

  在C#中定義Tuple對象,轉到定義查看,我們會看到如下代碼

 #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\mscorlib.dll
 #endregion

  即該語法在.Net Framework4框架中已經可以支持了。

  元組Tuple是一種數據結構,具有特定數量和元素序列。什么意思呢?就是元組是可以存貯多種類型的對象,可以想象一下當一個函數擁有多個不同類型的返回值時,我們除了定義了一個返回值以外,還要定義多個out或ref類型返回值才能解決這個需求;當然我們也可以定義一個對象保存多個返回值。但現在我們多了一個解決方案,定義返回值為一個元組,就解決了一切。

  元組Tuple是可以存貯多種類型的數據的。NET Framework 直接支持具有 1 到 7 元素的元組。 此外,您可以創建由嵌套中的元組對象的元組的八個或多個元素Rest屬性Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>對象。

  元組常用四種方法︰

  1,用來表示一組數據。 例如,一個元組可以表示的數據庫記錄,並且其組件可以表示每個字段的記錄。

  2,若要提供輕松訪問和數據集的操作。

  3,out參數 (在 C# 中) 或ByRef參數 (在 Visual Basic 中)。

  4,若要將多個值傳遞給通過單個參數的方法。 例如,Thread.Start(Object)方法只有一個參數,允許你提供一個線程在啟動時執行的方法的值。如果你提供Tuple<T1, T2, T3>對象作為方法自變量,則可以提供有三個項的數據的線程的啟動例程。

 class Program
    {
        static void Main(string[] args)
        {
            var tuple = new Tuple<string, int, int, int>(
                             "Kiba", 00001, 00002,
                             00003);

            Console.WriteLine(tuple.Item1);
            Console.WriteLine(tuple.Item2);
            Console.WriteLine(tuple.Item3);
            Console.WriteLine(tuple.Item4);

            var tupleCalss = new Tuple<A, B>(
                         new A(), new B());
            Console.WriteLine(tupleCalss.Item1.Name);
            Console.WriteLine(tupleCalss.Item2.Name);
            Console.ReadKey();
        }
    }
    public class A
    {
        public string name = "A";

        public string Name { get => name; set => name = value; }
    }
    public class B
    {
        public string Name = "B";
    }
}


輸出結果
Kiba
1
2
3
A
B


 

【PS:這里使用的目標框架是.net framework 4.0 ,我們可以看到屬性的聲明如下,即4.0已經支持=>模式的屬性設置了。】

 public string name = "A";

 public string Name { get => name; set => name = value; }

C#語法——委托,架構的血液

C#語法——泛型的多種應用

C#語法——await與async的正確打開方式

----------------------------------------------------------------------------------------------------

注:此文章為原創,任何形式的轉載都請聯系作者獲得授權並注明出處!
若您覺得這篇文章還不錯,請點擊下方的推薦】,非常感謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM