C# 元組

WBOY
發布: 2024-09-03 15:30:55
原創
712 人瀏覽過

C# 元組是 C#.net 4.0 版本中引入的資料結構。元組資料結構旨在保存不同資料類型的元素。元組有助於從單一參數中的類別方法傳回多個值,這比輸出參數、類別或結構類型或動態傳回類型具有許多優點。由於參數被傳遞到​​單一資料集中,因此可以輕鬆存取該資料集並對其執行不同的操作。

如何建立 C# 元組?

元組可以用兩種不同的方式建立

1.使用建構子

用於建立元組的建構子存在於 Tuple 中;班級。首字母縮寫“T”表示創建元組時指定的多種資料類型。元組中儲存的元素編號為 0 到 7,也就是說任何普通元組只包含 8 個元素,如果嘗試輸入超過 8 個元素,編譯器會拋出錯誤。

單一元素元組
Tuple <T1> (T1)
登入後複製

範例:

Tuple<int> Tuple_example = new Tuple<int>(27);
Console.WriteLine(Tuple_example);
Console.ReadLine();
登入後複製

輸出:

C# 元組

多元素元組
Tuple <T1, T2> (T1, T2)
登入後複製

範例:

Tuple<int, string, bool> tuple = new Tuple<int, string, bool>(1, "cat", true);
Console.WriteLine(tuple.Item1);
Console.WriteLine(tuple.Item2.ToString());
Console.ReadLine();
登入後複製

輸出:

C# 元組

2.建立方法

C#提供了靜態Create方法來建立元組,如下

單一元素元組
Create (T1);
登入後複製

範例:

var Tuple_example = Tuple.Create(27);
Console.WriteLine(Tuple_example);
Console.ReadLine();
登入後複製

輸出:

C# 元組

多元素元組
Create (T1, T2);
登入後複製

範例:

var Tuple_example = Tuple.Create(1, "cat", true);
Console.WriteLine(Tuple_example.Item1);
Console.WriteLine(Tuple_example.Item2.ToString());
Console.ReadLine();
登入後複製
登入後複製

輸出:

C# 元組

使用建構函式時,我們需要在建立元組時指定每個元素的資料型態。 Create 方法幫助我們消除瞭如上所示的繁瑣編碼。

值元組

泛型元組是一種引用類型,這意味著值儲存在堆上,這使得它的使用在記憶體和效能方面成本高昂。 C#7.0 在通用元組的基礎上引入了新的改進版本的元組,並將其命名為 ValueTuple。 ValueTuple儲存在堆上,很容易檢索。此值元組隨 .NET Framework 4.7 或 .NET 函式庫 2.0 一起提供。若要單獨安裝元組功能,您需要安裝名為 System.Value.Tuple 的 NuGet 套件。

關於 ValueTuple 的要點

  • 建立 ValueTuple 很容易

範例:

var Tuple_example = (1, "cat", true);
Console.WriteLine(Tuple_example.Item1);
Console.WriteLine(Tuple_example.Item2.ToString());
Console.ReadLine();
登入後複製

輸出:

C# 元組

這相當於:

var Tuple_example = Tuple.Create(1, "cat", true);
Console.WriteLine(Tuple_example.Item1);
Console.WriteLine(Tuple_example.Item2.ToString());
Console.ReadLine();
登入後複製
登入後複製
  • ValueTuple 也可以在不使用「var」關鍵字的情況下聲明。在這種情況下,我們需要提供每個成員的資料類型

範例:

(int, string, bool) Tuple_example = (1, "cat", true);
Console.WriteLine(Tuple_example.Item1);
Console.WriteLine(Tuple_example.Item2.ToString());
Console.ReadLine();
登入後複製

輸出:

C# 元組

  • 可以使用
  • 從 ValueTuple 傳回值

範例:

details.Item1;   – returns 28
details.Item2; -- returns ”CBC”
登入後複製
  • ValueTuple 與普通元組不同,不能只包含一個元素。

範例:

var detail = (28);  --this is not a tuple
var details = (28, “CBC”); -- this is a tuple
登入後複製

在第一條語句中,編譯器不會將「detail」視為元組,而是將其視為普通的「var」類型。

  • ValueTuple 可以容納八個以上的值,而無需在第七個位置嵌套另一個元組。
  • ValueTuple 中的屬性可以有與 Item1、Item2 等不同的名稱。
(int ID, String Firstname, string SecondName) details = (28, “CBC”, “C# Tuples”);
登入後複製
  • ValueTuple中的元素也可以依照程式設計的需要進行分離或丟棄。在上面的範例中,可以丟棄元素“FirstName”,並且可以將包含第一個元素和第三個元素的元組作為方法的傳回類型傳遞。

元組如何運作?

  1. C# 框架只允許元組中有8 個元素,這表示我們可以使用0 到7 之間的值,如果您想要建立包含更多元素的元組,則將第七個元素TRest 指定為嵌套元組
var nestedtuple_example = new Tuple <int, string, string, int, int, int, string, Tuple<double, int, string>> (5, “This”, “is”, 7,8,9, “number”, Tuple.Create (17.33, 29,”April”));
登入後複製
  1. 元組的一個重要用途是將其作為單一實體傳遞給方法,而不使用傳統的「out」和「ref」關鍵字。 「Out」和「ref」參數的使用可能會很困難且令人困惑,而且「out」和「ref」參數不適用於「asnyc」方法。例如public void TupleExampleMethod (Tuple tupleexample)
{
Var multiplication = tupleexample.Item1 * tupleexample.Item2;
Console.WriteLine (“Multiplication is”, {0}, multiplication);
}
登入後複製

TupleExampleMethod 方法看起來像

TupleExampleMethod(new Tuple<int, int> (34,56));
登入後複製
  1. The dynamic keyword can also be used to return values from any method, but it is seldom used due to performance issues. The returning of the tuple from a method.
public static Tuple <int, string> GetPerson()
{
return Tuple.Create (1, “abc”);
}
登入後複製

Let’s create a program in Visual to understand how tuple works.

  • Launch Visual Studio and create a windows project.

C# 元組

  • We are creating a simple multiplication program that shows passing tuples by a method. A sample window created as below.

C# 元組

The values from both textboxes are taken into a tuple and the tuple is passed on to a method.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnMultiply_Click(object sender, EventArgs e)
{
int value1 = Convert.ToInt32(txtVal1.Text);
int value2 = Convert.ToInt32(TxtVal2.Text);
CallMethod(new Tuple<int, int>(value1, value2));
}
private void CallMethod(Tuple<int, int> tuple)
{
txtResult.Text = Convert.ToString(tuple.Item1 * tuple.Item2);
Console.ReadLine();
}
}
}
登入後複製

The result is displayed in the third text box named as txtResult. End result looks like.

C# 元組

Conclusion

The tuple data structure is a reference type, which means the values are stored on the heap instead of stack. This makes usage of tuples and accessing them in the program an intensive CPU task. The only 8 elements in tuples property is one of the major drawbacks of tuples as nested tuples are more prone to induce ambiguity. Also accessing elements in tuple with Item is also ambiguous as one must remember what position the element is on in order to access it. C#7 has introduced ValueTuple which is value type representation of tuple. It works only on .NET Framework 4.7 and hence needs to install separately from the Nuget package System.ValueTuple package.

以上是C# 元組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!